라떼는말이야

주피터 노트북에서 자바 실행 환경구축. java on jupyter notebook 본문

기타 팁

주피터 노트북에서 자바 실행 환경구축. java on jupyter notebook

MangBaam 2021. 8. 10. 13:57
반응형

주피터 노트북은 주로 파이썬을 아주 유용하게 사용할 수 있는 환경을 제공한다.

특히 주피터 노트북의 가장 큰 장점은 셀로 구분을 할 수 있기 때문에 간단한 프로그램이나 코딩테스트를 연습할 때 특정 변수의 값을 확인하는 등의 테스트 용으로 사용할 수 있다는 점이다.

하지만 몇몇 설정을 하면 파이썬 뿐만 아니라 자바와 같은 다른 언어도 실행이 가능하다.

 

IJAVA 다운로드

IJAVA를 설치하기 전에 Java JDK 9 이상이 설치되어 있어야 한다.

https://github.com/SpencerPark/IJava/releases

 

Releases · SpencerPark/IJava

A Jupyter kernel for executing Java code. Contribute to SpencerPark/IJava development by creating an account on GitHub.

github.com

Java JDK 9 이상이 설치된 상태라면 위 링크로 들어가서 가장 최신의 압축 파일을 다운로드 받는다.

IJAVA 설치 페이지

 

IJAVA 파일 이동

다운로드 받은 압축 파일을 압축 해제하면 [java] 폴더와 [install.py] 파일이 보인다.

ijava 파일

 

주피터 노트북은 기본적으로 사용자의 홈 디렉터리에서 실행된다.

주피터 노트북에서 설치해야하기 때문에 좀 더 접근하기 편하도록 자신의 홈 디렉터리에 위 2개의 (폴더 + 파일)을 이동한다. (혹은 접근하기 편한 위치로. 나는 temp 폴더를 만들어 그곳에 위치시켰다.)

 

주피터 노트북 실행

주피터 노트북을 실행시키고 두 파일을 옮겼던 디렉터리로 이동한 후 같은 위치에서 새 파이썬 파일을 하나 생성한다.

 

IJAVA 설치

!python install.py --sys-prefix

위 코드를 셀에 입력한 후 [Shift + Enter] 단축키를 누르거나 위젯의 Run 버튼을 눌러 해당 셀을 실행시킨다.

 

IJAVA 설치 완료

빨갛게 경고문이 뜨지만 설치는 완료되었다.

 

주피터 노트북 재실행

설치된 내용을 적용하기 위해 주피터 노트북을 재실행한다.

단순히 탭만 껐다 켜는 것이 아니라 프롬프트를 닫았다가 재실행한다.


 



설치 확인

(좌) 설치 전, (우) 설치 후

왼쪽 사진은 IJAVA 설치 전, 오른쪽 사진은 IJAVA 설치 후이다.

보이지 않던 Java가 보인다. (그 외에 jupyter이나 tensorflow가 안보이는 사람도 있을 수 있다. 정상!)


실행

최초에 실행시 주피터 노트북이 오류가 나거나 다른 이유로 잘 안된다면 JDK 버전이 9 이상인지 확인하고, Path가 제대로 설정되어 있는지 확인한다. 그리고 재부팅을 해본다.

제대로 실행됐다면 오른쪽 위에 Java라고 되어있을 것이다.

그리고 Test 클래스를 작성해보았다.

하지만 실행 결과 문자열이 출력되지 않았다.

자바는 모두 클래스로 이루어져 있다. 그리고 프로그램의 진입점은 main 함수이다. 그러나 주피터 노트북에서 자바를 실행시킬 때에는 셀 단위로 관리가 되기 때문에 main부터 실행하지 않는다.

위의 코드를 실행시키려면 다음과 같이 작성하면 된다.

main 함수 실행

일반적인 클래스 함수를 사용하는 것과 같다.

물론 다른 메소드들은 기존처럼 객체를 생성해서 메소드를 호출할 수 있다.

 

클래스 없이 작성

주피터 노트북에서 자바를 사용하는 장점은 위 예제처럼 클래스를 작성하지 않고도 바로 사용할 수 있다는 점이다.

또한 파이썬에서 사용할 때와 마찬가지로 마지막 라인에 변수 명을 쓰면 System.out.println() 없이 변수의 값이 출력되고, 마지막 라인에 함수를 쓰면 함수 리턴값이 출력된다.

클래스를 별도로 작성하지 않고도 특정 변수나 함수 값을 확인하거나 간단한 기능을 동작시켜 볼 때 아주 유용하게 사용될 것이다.

반응형
Comments