클래스로더 커스터마이징 오픈소스 JCL을 소개합니다.

JAR파일을 런타임 도중 동적으로 로드, 언로드 할 수 있는 ClassLoader를 개선한 오픈소스입니다.

 

2016년에 Core 2.8버전까지 maven에 올라와 있으며 총 Usage는 26 정도입니다.

클래스로더를 커스터마이징 할 때 참고하기 좋을 것 같습니다.

 

GitHub 주소는 : 

https://www.notion.so/JAVA-Custom_ClassLoader-9c335079187b4cf18bc5d62ea593b39c#386d716a715d4a79859fae1dbb07d40e

JCL Core 주소를 통해서 maven에서도 사용 가능하다

JDK 1.5 이상을 필요로 하며 GITHUB에 간단한 예제 코드를 제공하고 있습니다.

런타임 도중 동적으로 Jar파일을 할당할 기회가 생기면 한번 활용해 보시기를 추천드립니다.

 

아래는 jar파일을 동적으로 할당할 수 있는 Github 소개의 튜토리얼 예시입니다. 

JarClassLoader jcl = new JarClassLoader();

  //Loading classes from different sources
  jcl.add("myjar.jar");
  jcl.add(new URL("http://myserver.com/myjar.jar"));
  jcl.add(new FileInputStream("myotherjar.jar"));
  jcl.add("myclassfolder/");

  //Recursively load all jar files in the folder/sub-folder(s)
  jcl.add("myjarlib/");

  JclObjectFactory factory = JclObjectFactory.getInstance();

  //Create object of loaded class
  Object obj = factory.create(jcl, "mypack.MyClass");

Intellij IDE에는 Javascript 및 java 파일의 부모-자식 관계를 파악할 수 있는 Call_hierarchy 기능이 있습니다.

 

기본 단축키는 Ctrl + Shift + H 이며, 키보드 커서가 위치하는 곳이 Type, 혹은 메서드에 따라서 다르게 작동합니다.

 

Type에 커서를 둔 후 작동시키면 상속관계에 대한 네비게이션이 제공됩니다.

Type hierarchy search

Method에 커서를 둔 후 작동시키면 메서드를 호출하는 위치를 모두 확인할 수 있습니다.

Method hierarchy search

Javascript 역시 메서드 호출 위치를 확인할 수 있습니다.

다만, JAVA처럼 위치관계가 명확하지 않아 “메서드 명” 중심으로 모든 JS파일을 스캔, 사용처를 가져오므로 

사용에 주의가 필요합니다. 

 

코드 변경 시, 다른 코드에 미치는 영향을 줄이기 위한 의존성 체크에 활용해보시기 바랍니다.

 

❗ 확인이 더 필요한 정보

IntelliJ에서는 기본적으로 Hot swap이라는 기술을 제공하는데 해당 기술로 별다른 플러그인이나 프로그램 없이 자바 소스 또는 정적 소스들을 서버 종료 없이 실시간으로 변경이 가능하다. 

 

사용방법에 대해서 알아보자.

우선 해당 소스는 ModelAndView에 데이터를 담아서 타임리프로 구성된 페이지에 넣은 뒤 해당 텍스트를 화면에 보여주는 예제이다.

 

여기서 서버를 끄지않고 내용을 바로 변경하기 위해서는 이렇게 하면 된다.

수정한 소스 페이지에서 마우스 오른쪽을 누르면 밑의 사진과 같은 것을 찾을 수 있다.

이걸 누르면
인텔리가 열일한다.

이렇게 서버 종료없이 간단하게 내용이 수정된다!

+ Recent posts