JRebel'e yeniden dağıtım alternatifleri [kapalı]


190

JRebel, yeni derlenmiş kodun, uygulamayı yeniden başlatmadan yeniden konuşlandırılmasını sağlar. Başka bir alternatif olup olmadığını merak ediyorum (ücretsiz?). SSS sayfası bu sorunun cevabının, ama JRebel karşı önyargılı emin değilim. Bu soru bir yıl önce bu sitede soruldu, ancak yeni bir bilgi olup olmadığını görmek için geri getiriyorum.

Bir yan notta, JRebel'i gerçekten seviyorum, ancak ücretsiz bir alternatif varsa, denemeye hazırım.

Ek bir not, açık kaynak kodlu bir proje üzerinde çalışıyorum ve açık kaynak kodlu bir proje üzerinde olduklarını ispatlayabilen kişilere bir yıllık ücretsiz lisanslar sunuyorlar. Bu benim için harika çalışıyor (www.kuali.org), ama sonsuza dek bu projede olmayacağım.


53
İyi soru. Satış departmanları son derece invaziv olduğu için JRebel'e de bir alternatif arıyoruz. JRebel gibi bir ürün için ödeme yaparken sorun yaşamıyoruz, ancak geliştiricilerimizi ve BT departmanımızı 7/24 rahatsız ederken değil.
neu242

4
Kendi ZeroTurnAround tarafından jRebel'e bir alternatif var: Jrebel'in açık kaynak projeleri ve çalışma durumu için ücretsiz sürümü ... my.jrebel.com
dellasavia

2
Geç cevap olduğunu biliyorum , bir JVM çalışırken sınıf dosya değişikliklerini yeniden yüklemek için bir JVM ajanı olan Spring Loaded - bir göz atabilirsiniz . Daha sonra yeniden yüklemeye uygun hale getirmek için sınıfları yükleme zamanında dönüştürür. Sadece bir JVM çalışırken basit değişikliklere izin veren 'hot code replace' in aksine (örn. Yöntem gövdelerindeki değişiklikler), Spring Loaded yöntem / alan / kurucu ve daha fazlasını eklemenizi / değiştirmenizi / silmenizi sağlar ...
Simple-Solution

Eclipse debugger - canlı kodunuzu anında değiştirir.
user1050755

Bunu kardeş sitede, Yazılım Önerileri Stack Exchange'de yayınlamayı deneyin .
Basil Bourque

Yanıtlar:


97

DCEVM'ye bir bakın , HotSpot VM'nin çalışma zamanında sınırsız sınıf yeniden tanımlamasına izin veren bir modifikasyonudur. Alanları ve yöntemleri ekleyebilir / kaldırabilir ve bir sınıfın süper türlerini çalışma zamanında değiştirebilirsiniz. DCEVM özellikleri bir parçası olarak Java'nın gelecekteki bir güncelleştirme entegre edilebilir Jep 159 .

Orijinal sitede bulunan ikili dosyalar Java 6u25 ve Java 7'nin ilk sürümleriyle sınırlıdır. Proje Github üzerinde çatallanmıştır ve Java 7 ve 8'in son sürümlerini destekler. Windows / Linux. Java 11'den başlayarak proje yeni bir GitHub deposuna taşındı ve şimdi OS X için ikili dosyalar sağlıyor.

DCEVM, Debian ve Ubuntu için paketlenmiştir, OpenJDK ile kolayca entegre edilmiştir ve çağrılabilir java -dcevm. Paketin adı varsayılan JDK sürümüne bağlıdır:


5
İyi çalışıyor, JRebel'den daha hızlı ve daha az bellek tüketiyorum. Tek kısıtlama Java 6u25'e bağlı kalmaktır.
Emmanuel Bourg

3
Çok teşekkür ederim. Bütün gün jRebel'in istendiği gibi çalışmasını sağladım. DCEVM kurtarmaya geldi.
alehro

4
İşte JDK 7u45 ve MacOSX'ta DCEVM için tam derleme ve yükleme talimatları: neu242.livejournal.com/52962.html
neu242 9:13

1
JEP 159, JDK 8'in bir parçası değildir. JDK 9'a ertelenmiş olabilir, ancak henüz onaylanmamıştır.
KrishPrabakar

5
Burada bazı tam JVM 1.7 ikili dosyaları bulundu: dcevm.nentjes.com bu yüzden JVM'nizi yamalamanıza gerek yok. Win64 olanı denedim ve benim için harika çalıştı. Daha fazla ayrıntıya ihtiyacınız varsa burada da blog yazdım
dnang

42

Hotswap Agent , birçok Java çerçevesini (Spring bean tanımını, Hazırda Bekletme varlık eşlemesini, günlük kaydı düzeyi kurulumunu, ...) destekleyen DCEVM'nin bir uzantısıdır.

Java 1.7 için DCEVM ve derlenmiş ikili dosyaları nasıl kuracağınıza dair birçok belge de vardır.


5
Artık özel bir web siteleri var: hotswapagent.org . Proje oldukça yenidir ama gayet iyi işliyor.
Didier L

Bunu izledikten sonra tutulmaya entegre etmek için bu öğreticiyi takip ettim: tirthalpatel.blogspot.fr/2014/06/… bir cazibe gibi çalışıyor
jpprade

@edudant 'Hotswap agent'ı kurduktan sonra, DCEVM kurmamız gerekiyor mu? Çünkü Ubuntu 19.04'te "sudo apt install openjdk-11-jre-dcevm" ve ayrıca IntelliJ Ultimate 2019.1.3 eklentisini kullanarak DCEVM kurdum. JRebel'in işini bırakalım 'Hotswap agent' yüklüyse, DCEVM ne işe yarar?


20

İlkbahar öğrencileri tarafından, Grails yeniden yüklemesi için kullanılır, ancak Java ile de çalışır:

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


3
Grumble istemiyorum ama yay yüklü bağımlılık yeniden yüklemeyi desteklemiyor.
lbednaszynski

Hatırladığım gibi, hangi paketlerin yeniden yüklenebilir hale getirileceğini söylemek için ayarlayabileceğiniz sistem özellikleri vardır. Başka sınırlamaları vardır ve ben muhtemelen her durumda DCEVM ile gitmek istiyorum.
Ramon

1
"hangi paketleri yeniden yüklenebilir" - doğru. @Lbednaszynski'nin işaret ettiği sorun, bağımlı JAR'ları yeniden yüklemeyecek olmasıdır. Maven çok modüllü projeler için bu gereklidir.
Marcel Stör

Bu proje şimdilik tavan arasında!
jpmottin



4

Şuna bir göz atmak isteyebilirsiniz:

HotSwap desteği: Java HotSpot VM'nin nesneye yönelik mimarisi, anında sınıf yeniden tanımlaması veya "HotSwap" gibi gelişmiş özellikleri etkinleştirir. Bu özellik, çalışan bir uygulamada değiştirilen kodu hata ayıklayıcı API'leri aracılığıyla değiştirme yeteneği sağlar. HotSwap, Java Platform Hata Ayıklayıcı Mimarisine işlevsellik ekleyerek, bir sınıfın hata ayıklayıcının kontrolü altında yürütülürken güncellenmesini sağlar . Ayrıca, profil oluşturma kodunun yerleştirildiği yöntemlerin versiyonlarında hotswapping ile profil oluşturma işlemlerinin gerçekleştirilmesine izin verir.

Şimdilik bu sadece yeni derlenen yöntem gövdesinin uygulamayı yeniden başlatmadan yeniden konuşlandırılmasına izin veriyor. Tek yapmanız gereken bir hata ayıklayıcı ile çalıştırmaktır. Eclipse'de denedim ve harika çalışıyor.

Ayrıca Emmanuel Bourg'un cevabında belirttiği gibi ( JEP 159 ), süper tiplerin eklenmesi ve yöntemlerin ve alanların eklenmesi ve kaldırılması için destek olması umulmaktadır.

Referans: Java Teknik İncelemesi 135217: Güvenilirlik, Kullanılabilirlik ve Servis Verilebilirlik


-3

JRebel ücretsizdir. Satın alma. "Satın al" sayfasındaki "ücretsiz" seçeneğini (radyo düğmesi) seçin. Ardından "Sosyal" i seçin. Kaydolduktan sonra, tamamen işlevsel bir JRebel lisans anahtarı alırsınız. Daha sonra JRebel'i indirebilir veya IDE'lerin gömülü versiyonunda anahtarı kullanabilirsiniz. Yakalama, (evet, bir yakalama var), FB zaman çizelgenizde veya Twitter hesabınızda ayda bir kez sizin adınıza yayınlamalarına (reklam vermelerine) izin vermelisiniz. Onlara twitter hesabımı verdim, biggie yok, asla kullanmıyorum ve tanıdığım hiç kimse gerçekten kullanmıyor. 260 $ tasarruf edin.


14
Bir tane daha yakalama var. JRebel Social sadece ticari olmayan kullanımlar için ücretsizdir. Evet, elbette, kişisel projeniz için mi yoksa işyeriniz için mi kullandığınızı kontrol etmeyeceğiz, ancak denetçileri yazılımı kötüye kullandığını görürlerse beğenmeyebilirler.
Anton Arhipov

2
Asla aksini önermem. Aslında - bunu gündeme getirmemin tek nedeni artık "bireysel" lisans olmaması. Şirketimin çalışma ruhsatımı ödemesini sağlayabildim. Daha sonra 3 yıldan uzun bir süre kişisel lisansım için kişisel kullanımım için ödeme yaptım. Ama yılda 260 dolar kuzeyinde ne zaman, bu pratik oldu. Bu benim (ve diğerleri) için en iyi çözümdür, ancak fiyat makul olsaydı ben de bunun için ödeme tutardı.
Michael Andrews

42
Ayrıca, her yıl zaten satın aldığım yazılımı tekrar satın almam gerektiğimi sinir bozucu. Başka hiçbir şirket bunu yapmaz. Genellikle bir kez yazılım satın alırsınız. Yükseltmeyi seçerseniz - tam fiyat için tekrar satın alırsınız (veya şirkete bağlı olarak bir yükseltme fiyatı). Ancak bunun için ödediğiniz şey YENİ özelliklerdir - zaten ödediğiniz özelliklerle aynı değildir. Bu, işletim sistemi için tekrar ödeme yapana kadar Apple veya Microsoft'un her yıl bilgisayarınızı devre dışı bırakması gibi olacaktır. Düşünce için yiyecek.
Michael Andrews

2
JRebel Social, myJRebel ile değiştirildi. Ticari olmayan kullanım için ücretsizdir, sadece istatistiklerin paylaşılmasına izin vermeniz gerekir: my.jrebel.com
Steve Swinsburg

1
Sonuçta, JRebel bir geliştirici yazılım lisansı için nispeten ucuzdur.
Jared Hooper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.