본문 바로가기

programming/java9

[java]리플렉션(reflection) 리플렉션이란? 리플렉션은 자바만의 독특한 기능이다. Reflection은 '투영, 반사'의 사전적 의미를 갖고 있다. 간단하게 자바의 리플렉션을 정의하자면 '객체를 이용해 클래스의 정보를 분석하는 기법'이다. 리플렉션은 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수 등을 접근할 수 있도록 해주는 API라고 보면 되겠다. 예를 들면 특정 클래스 이름을 인자로 전달할 시 그 이름에 해당하는 클래스 타입으로 객체를 생성하여 반환하는 메서드를 구현한다고 할 때 리플렉션을 활용할 수 있을 것이다. - 참조: https://kmongcom.wordpress.com/2014/03/15/%EC%9E%90%EB%B0%94-%EB%A6%AC%ED%94%8C%EB%A0%89%EC%85%98%EC%97.. 2017. 12. 4.
[java]JVM 구조 먼저 컴파일부터 실행까지의 과정을 간단하게 요약하자면컴파일러(javac)를 통해 .java 코드를 클래스 파일(바이트 코드)로 변환한다.생성한 클래스 파일을 JVM에 로드.Excution Engine을 통해 바이트 코드를 해석.해석된 프로그램은 Runtime Data Areas에 배치되어 실질적인 수행이 이루어지게 된다.c, c++과 같은 언어가 object 파일을 생성 후 관련 파일들을 linking하여 .exe 파일로 생성하는 과정과는 차이가 있다. 왜냐하면 자바는 플랫폼에 독립적인 바이트 코드를 JVM 상에서 실행하기 때문에 이론적으로는 CPU, 운영체제에 무관하게 동일하게 동작할 수 있다. JVM 구조class Loader : JVM 내로 class 파일을 로드하고 Link를 통해 적절히 배치하는.. 2017. 12. 2.
JIT(just-in-time) 컴파일 java가 갖는 가장 큰 장점은 플랫폼에 독립적으로 동작할 수 있다는 점이다. 그렇다면 전체적인 java 프로그램의 실행 과정은 어떻게 진행될까? 프로그래머가 작성한 소스코드는 자바 컴파일러(javac.exe)에 의해 byte code로 변환된다. 이러한 byte code는 JVM 상에서 동작하기 때문에 플랫폼에 독립적으로 동작할 수 있다는 장점이 있기에 porting과 같은 것을 고려할 필요가 없다. 변환된 byte code를 JVM이 실행한 플랫폼에 맞는 기계어로 변환한다. 다양한 플랫폼의 이식을 지원하기 위해 java가 지원하는 native methods을 통해 각 플랫폼에 맞는 기계어로 변환된다. java는 JIT 컴파일을 수행한다. JIT 컴파일(just-in-time compilation)은 .. 2017. 12. 1.
[java] 정규 표현식 Regular Expression(정규 표현식)필요로 하는 문자열의 형식을 지정해서 그 내용으로만 데이터가 입력되는 것을 check 하기 위해 사용 ex) 010 - 2243 - 4333API: java.util.regex.Pattern 클래스를 찾아 활용주요 기호와 내용[]: 해당 한 개의 문자만 허용 ex) [abc]: a, b, c 중 하나의 문자[^abc]: a, b, c 이외의 하나의 문자[a-zA-Z]: a~z, A~Z 중 하나의 문자[0-9]: 0부터 9까지 하나의 문자\d: 한개의 숫자[0-9]와 동일\s: 공백 처리 필요\w: 한개의 알파벳 또는 한개의 숫자 [a-zA-Z0-9]와 동일? : 없음 또는 한 개* : 없음 또는 한 개 이상+ : 한 개 이상{n} : 정확히 n 개{.n} :.. 2017. 6. 1.