2013-11-28 4 views
24

JavaVM에서 더 나은 HotSwapping을 찾고 있습니다. 메서드 본문 변경 만 적용 할 수 있다는 것은 괜찮지만 제한적입니다.고급 코드 JDK 8의 핫 스와핑?

사용할 수있는 옵션은 JRebel이고 단종 된 프로젝트는 Dynamic Code Evolution Virtual Machine (DCEVM)입니다.

DCEVM의 핵심 개발자가 작성한 JEP 159이 있습니다. 2011 년 블로그 게시물에 따르면 DCEVM 개발자는 Oracle을 JDK에 통합하는 작업을 수행하고 있습니다.

JDK 8 베타에 대한 지원이 이미 있습니까? 아니면 JDK 9로 연기 되었습니까?

대부분 개인 방법을 추가하고 제거하고 이름을 바꾸려면 핫스왑이 필요합니다. 이것은 많은 도움이 될 것입니다. 저에게 그렇게 할 수있는 제품이 있습니까 (홍보 캠페인을 통해 나를 화나게하는 JRebel 옆).

DCEVM의 마지막 지원 버전은 1.6u24 용이며 32 비트 Linux 바이너리 만 제공합니다. 필자가 1.7 및 64 비트 Linux를 사용함에 따라이 점은 저를위한 쇼 스토퍼입니다.

Fakereplace이라는 github에서 사용할 수있는 또 다른 프로젝트가 있습니다. 내 목적으로 쉽게 사용할 수 있습니까? 아니면 조사하지 않겠습니까?

+4

JRebel 개발자 중 한 명은 시장에서 서로 다른 코드 스왑 솔루션에 대해 간략하게 살펴 보았습니다. - http://stackoverflow.com/a/17642585/2269816 개인적 견해로는 JRebel이 작업을 잘 수행 했으므로 경쟁자가 될 수 없습니다. 그 순간에 가까이 온다.공구 자체가 최고 품질 임에도 불구하고 마케팅을 싫어하기 때문에 도구를 사용하지 않고 주로 자신을 해치고 있습니다. –

답변

10

JDK 8 및 JDK 9에 포함 된 JEP는 this page입니다. JEP-159는 그들 중에 있지 않습니다. jep index에서 JEP-159는 아직 JDK 10 이상이 아닌 JDK 릴리스를 대상으로하지 않음을 알 수 있습니다.

JEP-159 상태는 현재 "Submitted"입니다. 이 과정 is described 다음과 같이 성공적인 JEP는 다음과 같은 상태를 통과

:

  • 초안 - 초기 검토 및 합의 구축을위한 저자의 순환을
  • 게시 - JEP 체결 더 넓은 검토를 위해 저자에 의한 아카이브
  • 제출 - 평가자가 작성 준비 완료
  • 후보자 - Ope에 의한 로드맵에 포함시키기 위해 받아 들여짐 완전히
  • 완료 자금을 지원하는 그룹이나 지역 리드 판단 - - nJDK는
  • 이 자금을 리드 완료 및

그래서이 아직 로드맵 허용 아니에요 전달했다.

+1

그래서 알파 버전이 있는지 또는 비슷한 것을 사용할 수 있는지 궁금합니다. DCEVM 프로젝트는 진화하여 1.7 버전이없는 이유를 궁금해하며 1.8 버전을 원했습니다. –

+0

@MartinKersten 필자는 적어도 사전에 알파 버전이 포함되어 있을지 모르겠다. 적어도 어떤 범위에도 포함되지 않았기 때문이다. – eis

+2

나는 설치하고 실행할 수있는 조각과 같은 것을 기대했다. JDK6과 2 년 동안 Oracle에 고용 된 사람들을 위해 DCEVM 버전이 작동하는 것을 보았으므로 현재 개발 상황을 보여줄 수 있기를 기대했습니다. 나는 오라클이 자신의 돈을 중단하고이 팀을 사임하기로 결정하지 않았기를 바란다. –

11

Github에 저장소에 유지 관리되는 DCEVM 포크가 있습니다. 최근 Java 8 용으로 업데이트되었습니다. 바이너리는 GitHub 릴리스 또는 downloads page을 통해 사용할 수 있습니다.

메소드 추가/삭제와 같은 간단한 작업의 경우, 16 개의 다른 구성에서 자동화 된 테스트를 통해 신뢰성이 높아야합니다. 그러나 여전히 JVM을 충돌시킬 수 있으므로 프로덕션 환경에서 사용해서는 안됩니다.

+0

감사합니다. 제가 확인하겠습니다. 개발을 위해 필요하기 때문에 그것이 효과가 있다면 그것은 최고 일 것입니다. –

+0

PHP와 비슷한 경험을 제공하기 위해 HTML 페이지의 렌더링 방법을 변경하고 싶습니다. 결과를 얻었 으면 수정 된 결과를 기대하는 페이지 단위 테스트를 적용합니다. 오늘 나는 코드가 바뀔 때마다 페이지를 자동으로 다시로드하는 대신 프런트 엔드 서버를 매시간 다시 시작해야합니다 (서버에 상태를 묻는 페이지에 다트 기능을 추가 한 것). –

+3

고맙습니다. 리눅스에서 oracle java 1.8.0_05 x86-64로 시도해 보았습니다. 아름답게 작동합니다. fastdebug는 상당히 느리기 때문에 "product"프로파일을 사용하십시오. –