본문 바로가기

java

(4)
[JVM] Runtime.exec ~ waitFor() Java에서 네이티브의 실행파일을 실행할 수 있게 되어 있다.물론 OS마다 프로세스를 생성하는 방법은 다를 것이다. 윈도우라면 CreateProcess라는 Win32 API함수를 사용하고, UNIX 계열이라면 execvp와 같은 시스템 콜을 사용한다. 따라서 Java코드에서 Native 코드로 넘어가는 부분의 구현부의 차이를 Builder 패턴을 이용하여 구현을 해놓았다. Process 클래스는 추상 클래스이다. 따라서 이 클래스를 실재 구현하고 있는 구체 클래스를 통해서 동작을 하는데,Runtime클래스의 exec 메소드를 통해서 얻을 수 있고 직접 생성은 불가능하다. exec 메소드는 여러가지로 오버라이드 되어 있는데, 결국 아래의 메소드가 끝판왕이다. public Process exec(String..
[책] UML 실전에서는 이것만 쓴다 원제: UML for Java Programers 이 책은 Agile Software development라는 책을 쓴 로버트 마틴이 쓴 책이다.UML 책이라고 생각했다가는 오산이다. 사실은 UML을 가장한 객체지향 이론에 대한 책이다. 사실 나는 UML을 위해 책을 샀다가 보물을 발견한 느낌이다.토비의 스프링에서도 이 책에 대해 언급이 될 정도로 유명한 책인 것 같다.UML에 대해 정확하고 확실하게 배우려면 이 책의 서문에 나와있는 리팩토링으로 유명한 마틴 파울러의 UML Distilled를 보는게 나을 지도 모르겠다. 하지만 이 책에서도 UML의 정수만 추렸고 진짜로 UML을 모두 알려고 하지 말라고 또한 이야기 한다. 다음과 같이 읽으면 도움이 될 것 같다.1,2 장은 꼭 읽고, 6장이 이 책의 정..
스트림(Stream) 스트림은 자바에서 입출력에 관계된 추상화된 개념이다.또한 입출력이란 컴퓨터 장치와 다른 어떤것(사람, 다른 컴퓨터 등)과의 인터페이스를 담당하고 엄청 자주 사용된다. 하지만 자바를 배우는 사람은 의외로 스트림에 대한 개념이 약하다는 것을 느낀다. (예. 김xx, 장xx)System.out.println이 PrintStream의 일종이라는 것을 아는 사람이 몇명이나 될까 느낀다. 입출력 클래스는 다루는 데이터의 종류에 따라 계층(level)을 가지고 있다.추상화가 덜된 바이너리 데이터부터 구체화가 된 데이터 타입까지 말이다. (특히 데이터는 문자열이 되면서 다룰 수 있고 없는 데이터가 생기게 된다.) 모든 데이터를 다룰 수 있다 : InputStream / OutputStream이 InputStream과 ..
자바 가상 머신(JVM) JVM에 대한 글들. Inside the Java Virtual Machine - Bill Venners1장 - 자바 아키텍처 소개2장 - 플랫폼 독립3장 - 보안4장 - 네트워크 가동5장 - 자바 가상 머신6장 - 자바 클래스 파일7장 - 생명주기의 타입8장 - 링킹 모델9장 - 가비지 컬렉션10장 - 스택과 지역변수 연산들11장 - 타입 변환12장 - 정수 연산13장 - 로직14장 - 부동 소수 연산15장 - 객체와 배열들16장 - 제어 흐름17장 - 예외18장 - 메소드 인보케이션과 리턴20장 - 스레드 동기화