JRebel에 대한 대안 재배치 [닫기]


190

JRebel을 사용하면 새로 컴파일 된 코드를 응용 프로그램을 다시 시작하지 않고 재배치 할 수 있습니다. 대안이 있는지 궁금합니다 (무료?). 자주 묻는 질문 페이지는이 질문에 대한 대답,하지만 난이 JRebel 편중 것 확신합니다. 이 질문은 1 년 전에이 사이트에서 질문되었지만 누군가 새로운 정보가 있는지 확인하기 위해 다시 가져 왔습니다.

참고로, 나는 JRebel을 정말로 좋아하지만 무료 대안이 있다면 시도해 볼 수 있습니다.

한 가지 추가 참고 사항으로, 저는 오픈 소스 프로젝트를 진행 중이며 오픈 소스 프로젝트에 있음을 증명할 수있는 사람들에게 1 년 무료 라이센스를 제공합니다. 어느 것이 나를 위해 잘 작동하지만 (www.kuali.org), 나는 그 프로젝트에 영원히 있지 않을 것입니다.


53
좋은 질문. 우리는 영업 부서가 매우 침습적이기 때문에 JRebel의 대안을 찾고 있습니다. JRebel과 같은 제품에 대한 비용을 지불하는 데 문제는 없지만 개발자와 IT 부서를 연중 무휴 운영 할 때는 아닙니다.
neu242

4
오픈 소스 프로젝트 및 연구 사례에 Jrebel의 무료 버전 ... : 자신의 ZeroTurnAround에 의해 jRebel에 대한 대안이 my.jrebel.com
dellasavia

2
답이 늦다는 것을 알고 있습니다. 스프링로드 -를 살펴보십시오 .JVM은 실행중인 동안 클래스 파일 변경 사항을 다시로드하는 JVM 에이전트입니다. 로드 타임에 클래스를 변환하여 나중에 다시로드 할 수있게합니다. JVM이 실행 된 후 간단한 변경 만 허용하는 '핫 코드 대체'와 달리 (예 : 메소드 본문 변경) Spring Loaded를 사용하면 메소드 / 필드 / 생성자 등을 추가 / 수정 / 삭제할 수 있습니다.
Simple-Solution

Eclipse 디버거-실시간 코드를 즉시 대체합니다.
user1050755

자매 사이트 인 Software Recommendations Stack Exchange 에이를 게시하십시오 .
Basil Bourque

답변:


97

런타임시 무제한 클래스 재정의를 허용하는 HotSpot VM의 수정 인 DCEVM을 살펴보십시오 . 필드와 메소드를 추가 / 제거하고 런타임에 클래스의 수퍼 유형을 변경할 수 있습니다. DCEVM의 기능은 JEP 159의 일부로 향후 Java 업데이트에 통합 될 수 있습니다 .

원래 사이트에서 사용 가능한 바이너리는 Java 6u25 및 Java 7의 초기 버전으로 제한됩니다. 프로젝트는 Github 에서 분기되었으며 최신 버전의 Java 7 및 8을 지원합니다. 관리자는 Windows / 32에서 32/64 비트 VM에 대한 바이너리를 제공합니다. 리눅스. Java 11부터 프로젝트는 새로운 GitHub 저장소 로 옮겨졌으며 이제는 OS X 용 바이너리도 제공합니다.

DCEVM은 데비안 및 우분투 용으로 제공되며 OpenJDK와 편리하게 통합되며로 호출 할 수 있습니다 java -dcevm. 패키지 이름은 기본 JDK 버전에 따라 다릅니다.


5
잘 작동합니다 .JRebel보다 빠르고 적은 메모리 소비를 발견했습니다. 유일한 제한은 Java 6u25를 따르는 것입니다.
Emmanuel Bourg

3
대단히 감사합니다. jRebel이 원하는대로 작동하도록 하루 종일 망했습니다. DCEVM이 구조되었습니다.
alehro

4
다음은 JDK 7u45 및 MacOSX에서 DCEVM에 대한 전체 빌드 및 설치 지침입니다. neu242.livejournal.com/52962.html
neu242

1
JEP 159는 JDK 8의 일부가 아닙니다. JDK 9로 연기되었지만 아직 확인되지 않았습니다.
KrishPrabakar

5
dcevm.nentjes.com 에서 전체 JVM 1.7 바이너리를 찾았 으므로 JVM을 패치 할 필요가 없습니다. 나는 win64 하나를 시험해 보았고 그것은 나를 위해 훌륭하게 일했다. 자세한 내용이 필요한 경우 여기에 블로그를 게시했습니다
dnang

42

Hotswap Agent 는 많은 Java 프레임 워크 (Spring Bean 정의 재개, 최대 절전 모드 엔티티 맵핑, 로거 레벨 설정 등)를 지원하는 DCEVM의 확장입니다.

Java 1.7 용 DCEVM 및 컴파일 된 바이너리를 설정하는 방법도 많이 있습니다.


5
이제 전용 웹 사이트 hotswapagent.org가 있습니다. 이 프로젝트는 매우 새롭지 만 잘 작동하는 것으로 보입니다.
Didier L

나는이 튜토리얼을 따라 그것을 etalse에 통합 한 후 일식으로 통합했다 : tirthalpatel.blogspot.fr/2014/06/… 그것은 매력처럼 작동
jpprade

@edudant 'Hotswap 에이전트'를 설치 한 후 DCEVM을 설치해야합니까? Ubuntu 19.04의 "sudo apt install openjdk-11-jre-dcevm"및 IntelliJ Ultimate 2019.1.3의 플러그인을 사용하여 DCEVM을 설치했기 때문입니다. JRebel의 업무를 단독으로 수행하는 것이 아니라 'Hotswap 에이전트'를 설치하는 경우 DCEVM의 사용법은 무엇입니까?


20

Spring 사람들은 Grails 리로딩에 사용되었지만 Java에서도 작동합니다.

https://github.com/SpringSource/spring-loaded


3
나는 불평하고 싶지 않지만 스프링로드는 종속성 다시로드를 지원하지 않습니다.
lbednaszynski 2016 년

내가 기억하는 것처럼, 어떤 패키지를 다시로드 할 수 있는지 알려주도록 시스템 속성을 설정할 수 있습니다. 그것은 다른 한계가 있으며 아마도 어떤 경우에도 DCEVM과 함께 갈 것입니다.
라몬

1
"리로드 가능한 패키지"-맞습니다. @lbednaszynski가 지적한 문제는 종속 JAR을 다시로드하지 않는다는 것입니다. Maven 다중 모듈 프로젝트에 필수적입니다.
Marcel Stör

이 프로젝트는 현재 다락방에 있습니다!
jpmottin



4

다음을 살펴볼 수 있습니다.

HotSwap 지원 : Java HotSpot VM의 객체 지향 아키텍처를 사용하면 즉석 클래스 재정의 또는 "HotSwap"과 같은 고급 기능을 사용할 수 있습니다. 이 기능은 디버거 API를 통해 실행중인 응용 프로그램에서 수정 된 코드를 대체 할 수있는 기능을 제공합니다. HotSwap은 Java 플랫폼 디버거 아키텍처에 기능을 추가 하여 디버거의 제어하에 실행 중에 클래스를 업데이트 할 수 있도록합니다 . 또한 프로파일 링 코드가 삽입 된 버전의 메소드에서 핫 스와핑하여 프로파일 링 작업을 수행 할 수 있습니다.

현재 애플리케이션을 다시 시작하지 않고 새로 컴파일 된 메소드 본문 만 재배치 할 수 있습니다. 디버거로 실행하기 만하면됩니다. 나는 Eclipse에서 그것을 시도하고 훌륭하게 작동합니다.

또한 Emmanuel Bourg가 그의 답변 ( JEP 159 ) 에서 언급했듯이 수퍼 타입 ​​추가와 메소드 및 필드 추가 및 제거를 지원할 수 있기를 희망합니다.

참조 : Java 백서 135217 : 안정성, 가용성 및 서비스 가능성


-3

JRebel은 무료입니다. 그것을 사지 마십시오. "구매"페이지에서 "무료"옵션 (라디오 버튼)을 선택하십시오. 그런 다음 "소셜"을 선택하십시오. 가입하면 모든 기능을 갖춘 JRebel 라이센스 키를 얻게됩니다. 그런 다음 JRebel을 다운로드하거나 IDE 내장 버전에서 키를 사용할 수 있습니다. 캐치 (예, 캐치가 있음)는 FB 타임 라인 또는 트위터 계정에 한 달에 한 번 사용자를 대신하여 게시 (광고)하도록 허용해야합니다. 나는 그들에게 내 트위터 계정을주었습니다. 따라서 $ 260를 절약하십시오.


14
하나 더 잡을 수 있습니다. JRebel Social은 비상업적 용도로만 무료입니다. 그렇습니다. 개인 프로젝트 나 직장에서 실제로 사용하고 있는지 확인하지는 않지만, 감사인이 소프트웨어를 잘못 사용하는 것으로 보이면 좋아하지 않을 수 있습니다.
Anton Arhipov

2
나는 달리 제안하지 않을 것입니다. 사실-내가 이것을 제기하는 유일한 이유는 더 이상 "개인"라이센스가 없기 때문입니다. 회사에서 업무용 라이센스 비용을 지불하도록 할 수있었습니다. 그런 다음 개인 용도로 3 년 이상 개인 라이센스를 지불했습니다. 그러나 1 년에 260 달러의 북쪽 가격이 비현실적 일 때. 이것은 나 (그리고 다른 사람들)에게 가장 좋은 해결책이지만 가격이 합리적이라면 계속 지불했을 것입니다.
Michael Andrews

42
또한 매년 이미 구매 한 소프트웨어를 다시 구매해야한다는 사실은 실망 스럽습니다. 다른 회사는 이것을하지 않습니다. 일반적으로 소프트웨어를 한 번 구입합니다. 업그레이드를 선택한 경우 정가 (또는 회사에 따라 업그레이드 가격)로 다시 구매하십시오. 그러나 당신이 지불하는 것은 이미 지불 한 것과 동일한 기능이 아닌 새로운 기능입니다. OS를 다시 지불 할 때까지 매년 컴퓨터를 비활성화하는 Apple 또는 Microsoft와 같습니다. 생각할 거리.
Michael Andrews

2
JRebel Social은 myJRebel으로 대체되었습니다. 그것의 비 상업적 사용, 당신은 단지 통계의 공유를 허용해야합니다 my.jrebel.com
스티브 Swinsburg

1
대체로 JRebel은 개발자 소프트웨어 라이센스로 비교적 저렴합니다.
Jared Hooper
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.