Author: protochaos
Forum: 데스크탑/소프트웨어 게시판
Date: 2013-12-24
우분투에서 사용되는 자바는 보통 openjdk와 oracle-jdk입니다.
jdk는 Java Devolpment Toolkit 의 약자로, 개발에 필요한 라이브러리와 관련 프로그램들을 포함하는 것입니다.
jre는 Java Runtime Environment의 약자로, 자바로 된 프로그램들을 실행하기 위한 기본적인 것들을 제공하는 것입니다.
그러니까, 실행하는데에 있어서는 jre만 있으면 충분하고, 개발하는 사람은 jdk가 필요하고, 더 많은 도움말을 원하시면,
source와 example이 필요하겠죠.
JDK에는 jre가 포함되어 있습니다. 당연하게도, 개발하려면 실행을 해봐야 하니까, 실행환경은 필요할테니까요.
그리고, java는 보통 일종의 가상 머신(jvm-Java virtual machine)의 규격이고, 가상 머신 위에서 동작하거나 소통하기 위한 언어이고,
그 언어로 제작된 프로그램을 실행시킬 수 있는 기본 프로그램들을 의미하죠.
그러나, 가상 머신의 규격이라면, 규격에만 맞추고, 구현은 구현자의 방식에 따라 만들 수 있는 것입니다.
예를 들어 메모리 관리라던가, 데이터를 관리하는 방식, btree로 할 것인지, hash로 구현하던지, 그것은 구현자의 방식에 좌우되는 것이죠.
그러다 보니, 가상머신의 개발사들도 많이 있습니다.
ibm에서 만든 것도 있고, oracle에서 만든것, 오픈소스진영에서 만들어 진것 등등이죠.
처음에는 SUN에서 개발했지만, Oracle이 SUN을 인수함에 따라, Oracle이 주 개발사가 되었습니다.
SUN에서 내놓을 때에도, 나름 라이센스가 있었고, Oracle에서 주도하게 됨에 따라, 라이센스도 바뀐 부분이 있습니다.
일반적으로 가장 많이 사용되는 것은 Oracle에서 내놓은 것들입니다.
그러니까, Oracle jre를 설치하시는 것이 가장 일반적인 경우이고요...
다만, 리눅스에서는 오픈소스를 기본적으로 깔고 가기 때문에, OpenJDK를 설치하는 것이 가장 일반적입니다.
설치하는 방법은,
OpenJDK는
sudo apt-get install default-jre 혹은
sudo apt-get install default-jdk
이렇게 하시면 됩니다.
Oracle 것은
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-java8-installer
이렇게 하시면 다운로드 되고, 설치됩니다.
이외에도, gcc를 기반으로 만들어진 gcj라는 것도 있습니다.
이것은 자바 실행 파일을 이진실행파일(일반적인 실행파일)로 만드는 기능이 있습니다.
자바 실행 코드를 gcc에서 사용하는 c로 변환하여 컴파일 하는 기능이 있으니까요, 하지만...
이런 이진 실행 파일은 플랫폼 종속적이 됩니다.
리눅스용 프로그램을 윈도우즈에서 바로 실행할 수 없고, 반대의 경우도 마찬가지 인 것처럼 말이죠.
그리고, 여러 버전의 자바를 동시에 설치해 놓고, 원하는 데로, 필요할 때 골라 사용하실 수 도 있습니다.
sudo update-alternatives --config java
jar javac javaws 등도 마찬가지 입니다.
또한, 일반적으로 많이 사용되는 통합개발환경(IDE)로는 Eclipse가 있습니다.
sudo apt-get install eclipse 하시면 설치 되는데...
기본적으로 java 개발 환경이 설치되지만, c언어 개발 환경을 원하시면 eclipse-cdt를 설치하시면 됩니다.
이 eclipse에서 사용되는 자바 컴파일러는 ecj라는 것입니다.
eclipse로 수동으로 빌드하기 위해서는
eclipse -nosplash -application org.eclipse.jdt.apt.core.buildJdtApt -data 워크스페이스
이런 식으로 가능합니다.
ecj로 수동으로 컴파일 하기 위해서는
ecj 옵션 소스파일
이런 식으로 하시면 됩니다.
그리고, java-plugin 이라는 것이 있는데, 이것은 자바를 웹브라우져에서 읽어 들이기 위한 것입니다.
java applet은 이렇게 웹브라우져에서 로드될 수 있도록 작성된 프로그램입니다.
반면, java web start 라는 것은, 애플릿이 아닌 프로그램도 웹을 통해 다운로드하여 실행할 수 있게 해줍니다.
물론 관련해서 보안설정등을 추가로 해줘야겠죠.
오픈 JDK와 연동되는 자바 플러그인은 icedtea 입니다.
설치 방법은
sudo apt-get install icedtea-plugin
Oracle JRE에서는 libnpjp라는 것을 사용합니다.
이것은, 기본적으로 설치되는 것으로, 보통 /usr/lib/jvm/java-8-oracle/jre/lib/amd64/libnpjp.so 라는 파일로 존재합니다.
동적라이브러리구요, firefox에서 사용하기 위해서는, /usr/lib/mozilla/plugins 디렉토리에 복사하시거나 링크를 걸면 됩니다.
그렇지만 이렇게 직접적인 방법을 사용하실게 아니라, update-alternatives로 설정하시는 것이 좋습니다.
sudo update-alternatives --config mozilla-javaplugin.so
이 명령이 동작하는 방식은,
/usr/lib/mozilla/plugins/libjavaplugin.so 라는 심볼릭 링크를 만들기 위해,
사용자에게 설치되고 사용할 플러그인의 목록을 보여주고, 선택을 하게 합니다.
사용자가 선택을 하면, /etc/alternatives/mozilla-javaplugin.so라는 심볼릭 링크를 만듭니다.
그 대상은 선택한 것이 되는데...
Oracle JRE의 경우
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/libnpjp2.so
IcedTea의 경우
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so
과 같이 됩니다.
그리고 나서, /usr/lib/mozilla/plugins/libjavaplugin.so라는 심볼릭 링크를 갱신하고,
그 대상을 /etc/alternatives/mozilla-javaplugin.so로 합니다.
그래서 실제적으로, /etc/alternatives/mozilla-javaplugin.so의 대상이 무엇이 되는가를 결정하면 되고,
그것만 바꿔주면, 자동적으로 /usr/lib/mozilla/plugins/libjavaplugin.so는 변경하지 않아도,
대상이 바뀐 것과 같기 때문에... 자동으로 바뀌는 것입니다.
머, sudo update-alternatives --config java 역시 마찬가지 방식으로 동작합니다.
Forum: 데스크탑/소프트웨어 게시판
Date: 2013-12-24
우분투에서 사용되는 자바는 보통 openjdk와 oracle-jdk입니다.
jdk는 Java Devolpment Toolkit 의 약자로, 개발에 필요한 라이브러리와 관련 프로그램들을 포함하는 것입니다.
jre는 Java Runtime Environment의 약자로, 자바로 된 프로그램들을 실행하기 위한 기본적인 것들을 제공하는 것입니다.
그러니까, 실행하는데에 있어서는 jre만 있으면 충분하고, 개발하는 사람은 jdk가 필요하고, 더 많은 도움말을 원하시면,
source와 example이 필요하겠죠.
JDK에는 jre가 포함되어 있습니다. 당연하게도, 개발하려면 실행을 해봐야 하니까, 실행환경은 필요할테니까요.
그리고, java는 보통 일종의 가상 머신(jvm-Java virtual machine)의 규격이고, 가상 머신 위에서 동작하거나 소통하기 위한 언어이고,
그 언어로 제작된 프로그램을 실행시킬 수 있는 기본 프로그램들을 의미하죠.
그러나, 가상 머신의 규격이라면, 규격에만 맞추고, 구현은 구현자의 방식에 따라 만들 수 있는 것입니다.
예를 들어 메모리 관리라던가, 데이터를 관리하는 방식, btree로 할 것인지, hash로 구현하던지, 그것은 구현자의 방식에 좌우되는 것이죠.
그러다 보니, 가상머신의 개발사들도 많이 있습니다.
ibm에서 만든 것도 있고, oracle에서 만든것, 오픈소스진영에서 만들어 진것 등등이죠.
처음에는 SUN에서 개발했지만, Oracle이 SUN을 인수함에 따라, Oracle이 주 개발사가 되었습니다.
SUN에서 내놓을 때에도, 나름 라이센스가 있었고, Oracle에서 주도하게 됨에 따라, 라이센스도 바뀐 부분이 있습니다.
일반적으로 가장 많이 사용되는 것은 Oracle에서 내놓은 것들입니다.
그러니까, Oracle jre를 설치하시는 것이 가장 일반적인 경우이고요...
다만, 리눅스에서는 오픈소스를 기본적으로 깔고 가기 때문에, OpenJDK를 설치하는 것이 가장 일반적입니다.
설치하는 방법은,
OpenJDK는
sudo apt-get install default-jre 혹은
sudo apt-get install default-jdk
이렇게 하시면 됩니다.
Oracle 것은
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-java8-installer
이렇게 하시면 다운로드 되고, 설치됩니다.
이외에도, gcc를 기반으로 만들어진 gcj라는 것도 있습니다.
이것은 자바 실행 파일을 이진실행파일(일반적인 실행파일)로 만드는 기능이 있습니다.
자바 실행 코드를 gcc에서 사용하는 c로 변환하여 컴파일 하는 기능이 있으니까요, 하지만...
이런 이진 실행 파일은 플랫폼 종속적이 됩니다.
리눅스용 프로그램을 윈도우즈에서 바로 실행할 수 없고, 반대의 경우도 마찬가지 인 것처럼 말이죠.
그리고, 여러 버전의 자바를 동시에 설치해 놓고, 원하는 데로, 필요할 때 골라 사용하실 수 도 있습니다.
sudo update-alternatives --config java
jar javac javaws 등도 마찬가지 입니다.
또한, 일반적으로 많이 사용되는 통합개발환경(IDE)로는 Eclipse가 있습니다.
sudo apt-get install eclipse 하시면 설치 되는데...
기본적으로 java 개발 환경이 설치되지만, c언어 개발 환경을 원하시면 eclipse-cdt를 설치하시면 됩니다.
이 eclipse에서 사용되는 자바 컴파일러는 ecj라는 것입니다.
eclipse로 수동으로 빌드하기 위해서는
eclipse -nosplash -application org.eclipse.jdt.apt.core.buildJdtApt -data 워크스페이스
이런 식으로 가능합니다.
ecj로 수동으로 컴파일 하기 위해서는
ecj 옵션 소스파일
이런 식으로 하시면 됩니다.
그리고, java-plugin 이라는 것이 있는데, 이것은 자바를 웹브라우져에서 읽어 들이기 위한 것입니다.
java applet은 이렇게 웹브라우져에서 로드될 수 있도록 작성된 프로그램입니다.
반면, java web start 라는 것은, 애플릿이 아닌 프로그램도 웹을 통해 다운로드하여 실행할 수 있게 해줍니다.
물론 관련해서 보안설정등을 추가로 해줘야겠죠.
오픈 JDK와 연동되는 자바 플러그인은 icedtea 입니다.
설치 방법은
sudo apt-get install icedtea-plugin
Oracle JRE에서는 libnpjp라는 것을 사용합니다.
이것은, 기본적으로 설치되는 것으로, 보통 /usr/lib/jvm/java-8-oracle/jre/lib/amd64/libnpjp.so 라는 파일로 존재합니다.
동적라이브러리구요, firefox에서 사용하기 위해서는, /usr/lib/mozilla/plugins 디렉토리에 복사하시거나 링크를 걸면 됩니다.
그렇지만 이렇게 직접적인 방법을 사용하실게 아니라, update-alternatives로 설정하시는 것이 좋습니다.
sudo update-alternatives --config mozilla-javaplugin.so
이 명령이 동작하는 방식은,
/usr/lib/mozilla/plugins/libjavaplugin.so 라는 심볼릭 링크를 만들기 위해,
사용자에게 설치되고 사용할 플러그인의 목록을 보여주고, 선택을 하게 합니다.
사용자가 선택을 하면, /etc/alternatives/mozilla-javaplugin.so라는 심볼릭 링크를 만듭니다.
그 대상은 선택한 것이 되는데...
Oracle JRE의 경우
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/libnpjp2.so
IcedTea의 경우
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so
과 같이 됩니다.
그리고 나서, /usr/lib/mozilla/plugins/libjavaplugin.so라는 심볼릭 링크를 갱신하고,
그 대상을 /etc/alternatives/mozilla-javaplugin.so로 합니다.
그래서 실제적으로, /etc/alternatives/mozilla-javaplugin.so의 대상이 무엇이 되는가를 결정하면 되고,
그것만 바꿔주면, 자동적으로 /usr/lib/mozilla/plugins/libjavaplugin.so는 변경하지 않아도,
대상이 바뀐 것과 같기 때문에... 자동으로 바뀌는 것입니다.
머, sudo update-alternatives --config java 역시 마찬가지 방식으로 동작합니다.