JNI : Java Native Interface
2022. 11. 6. 19:52
DevLog/JAVA
JNI ? Java Native Interface의 약자로 Java 코드가 다른 언어(일반적으로는 C 또는 C++)로 작성된 코드와 상호 작용할 수 있도록 하는 API입니다. 왜 사용하나요? 이미 Java로 소프트웨어 코어단을 작성했고, 이 이후 코드들은 Java 코드로 재작성하기를 원치 않고, Java로 작성된 코어 코드만 재사용하고 싶을때 JNI를 많이 사용합니다. 우리가 시스템 디바이스에 접근할 필요가 있거나 혹은 Java의 성능을 넘어선 플랫폼 특징적인 작업을 수행할 경우에 JNI를 사용할 수 있습니다. (사실 많은 Java 라이브러리 루틴들이 결과적으로 내부(private) 네이티브 메소드를 이러한 목적으로 호출하고 있다. 예를 들면, I/O, Threading, Networking 패키지들 전..
Java에서 Immutable이란?
2017. 11. 8. 01:13
DevLog/JAVA
Immutable이란?Immutable이란 생성후 변경 불가능한 객체를 의미한다. 그래서 Immutable에는 set 메소드가 존재하지 않고, 멤버 변수를 변경할 수 없다. return type이 void인 메소드도 없다. 주로 void 메소드는 뭔가를 하고(하지 않을 수도 있다.) 멤버 변수를 변경하는 역할을 하는 것이기 때문에 쓸 일은 많지 않다. Immutable을 쓰면 멀티 스레드 환경에서 좀 더 신뢰할 수 있는 코드를 만들어 내기가 쉽다. 멀티 스레드 프로그램을 짜봤다면 멀티 스레드 환경에서는 에러보다 비정상적으로 작동하는 경우가 많다. 에러도 아니기 때문에 찾아내기도 어려운 편. 게다가 항상 발생하는 이슈가 아니라 100번에 한번 1000번에 한번 꼴로 문제가 생기는 경우가 많아 정말 머리 아..
JAVA와 C#의 차이점
2017. 11. 2. 23:44
DevLog/JAVA
프로그램 구조Javapackage hello; public class HelloWorld { public static void main(String[] args) { String name = "Java"; // 매개변수를 확인 if (args.length == 1) name = args[0]; System.out.println("Hello, " + name + "!"); } }C#using System; namespace Hello { public class HelloWorld { public static void Main(string[] args) { string name = "C#"; // 매개변수를 확인 if (args.Length == 1) name = args[0]; Console.WriteLi..
List와 반복문(loop), 그리고 변수 선언 위치에 대해서
2017. 11. 1. 21:37
DevLog/JAVA
ArrayList와 Vector는 RandomAccess inteface를 구현하고 있다.List의 크기만큼 반복문을 도는 방법에는 크게 두 가지 방법이 많이 쓰이고 있죠.java.util.List의 size()로 크기를 구해서 그 갯수만큼 반복문을 돌아서 get(int index)로 List안에 있는 객체를 가지고 온다.terator() 로 java.util.Iterator 객체를 얻은 후 이 객체의 hasNext()가 true인 동안 반복문을 돌아서 next()로 List안의 객체를 가지고 온다.그런데 그 객체가 java.util.ArrayList나 java.util.Vector가 확실할 때는 1번의 방법이 더 빠르다고 합니다. 그 이유는 API문서를 보시면 확인할 수 있듯이 ArryList와 Vec..
향상된 For문 (Enhanced For Loop)
2017. 11. 1. 20:54
DevLog/JAVA
기존의 For Loopfor (카운트 변수 정의, 초기화 ; 조건문 ; 카운트 변수 증감)for (int i = 0 ; i 실행 결과 : x y z 1 2 3단점 : 배열만 사용 가능, 배열 값을 변경하지 못하고 사용만 할 수 있음(배열 초기화 불가능).