본문 바로가기

programming35

[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.
[c++] 표준 입력 헤더 파일에서 cin 객체를 사용하여 표준 입력을 받을 수 있다. ex) int num;cin>>num; 문자열을 입력받고자 한다면 헤더를 추가하면 연산자 오버로딩으로 마찬가지로 가능하다. 하지만 공백, 개행문자는 무시된다. ex) string str;cin>>str; 입력으로 "ab def"를 입력하면 str에는 "ab"까지만 입력된다. 공백, 개행문자를 받기 위해서는 cin.get()을 사용하면 된다. cin.get()은 1개의 문자만을 입력받는다. ex) char a, b, c;a=cin.get();b=cin.get();c=cin.get();cout 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.