Hotswap ve alternatifler?


15

Üniversite hayatımın ilk günlerinden beri Java kullanıyorum ve sahip olduğumuz en büyük sorun diğer yorumlanmış dillerden kesinlikle daha az üretken olmak. Tüm insanlar java'nın en iyi derlenmiş dillerden biri olduğundan emindir.

Ancak, ne Sun ne de Oracle bu sorunu çözmek için yeterli çabayı göstermedi. Problemlerden biri, elbette, sınıfın yeniden yüklenmesi.

Topluluktan bu sorunu çözmek için son girişimler DaVinci Hotswap projesi , JRebel , PlayFramework . Ancak, bu yazının yazıldığı sırada hala olgun (imo) ve yerli değildi. Bazıları kurumsal kullanıma hazır değil, bazıları tüm IDE'lerle uyumlu değil, bazıları olgunlaşmamış üniversite projeleri. Yol haritası ve hatta geliştiriciye hazır Java hazır, ancak Java topluluğunun hâlâ uçuş sınıfının yeniden yüklenmesi için bir çözümü yok.

Oracle'ın bu sorunu çözmek için çaba göstermesi o kadar zor mu? Sınıf yeniden yüklemesi neden henüz yerel olarak uygulanmadı?


2
Aslında JRebel tamamen kurumsal kullanıma hazırdır ve ücretsiz olmasa da oldukça iyi IDE desteğine sahiptir.
CarlosZ

@CarlosZ Gerçekten mi? İlk betalardan 3.x serisine JRebel ile IntelliJ IDEA kullandım. "This" yerine "that" kullanmak zorundasınız. Her sürüm için forumda intelliJ eklentisi ile ilgili birçok sorun göreceksiniz. Ancak en kötü deneyim hata ayıklama sorunlarıydı. Hata ayıklayıcı çok geç bağlanabilir. Ve muazzam sorunlar yaşadık. Bir intellJ kullanıcısı olarak IDEA'daki JRebel ile ilgili somut deneyime sahibim. Ve elbette para ödemek de başka bir konudur.

@CarlosZ Gerçekten bir soru, java'da yerel olarak sınıf yeniden yükleme yapmanın neden zor olduğunu merak ediyorum.

Yanıtlar:


4

JEE / J2EE ne olacak? Bu ilk olarak 12 yıl önce piyasaya sürüldü. Bu doğrudan Sun / Oracle ve diğer birçok tedarikçi tarafından desteklenir.

Peki ya OSGi? İlk sürümü neredeyse 11 yıl önceydi. Eclipse (bir IDE) üzerine inşa edilmiştir, Sun / Oracle'dan Glassfish ve Apache Felix tarafından yaygın olarak kullanılmaktadır. Spring-OSGi ile kullanabilirsiniz.

Kurumsal uygulamalar, uygulama sunucuları tarafından ayrı ürünler olarak kasten desteklendiği için Java SE'de yerel olarak desteklenmemektedir.


@Peter Lawrey 1) Lawrey J2EE ile ilgili somut bir çözüm var mı? Ne demek istediğini anlayamadım mı? 2) Sınıfların yeniden yüklenmesi için OSGI'nın kullanılması gerektiğini düşünüyor musunuz? Jigsaw ne olacak? JCR düzeyinde bile, hala bir fikir birliği yoktur :). OSGI, sınıf yeniden yüklemesinden çok farklı bir alanı ele alıyor. 3) JavaSE bölümünü anlayamadım, biraz daha açıklayabilir misiniz? DaVinci HotSwap projesinin Oracle tarafından desteklendiğini lütfen unutmayın. En azından benim için böyle bir çözüm istemektedir.

Hot swap'ın ne yapmasını beklediğinize bağlıdır. Hata ayıklama için hot swap istiyorsanız, bunu bir süredir yapabilirsiniz. Bununla birlikte, sağlam kurumsal çözümler için bu nitelikteki hot swap uygun değildir ve sadece kontrollü sürümlerdir. Bu durumda JEE ve OSGi, aynı yararı olan ancak bir üretim ortamından bekleyebileceğiniz kontrol ile çalışan uygulamaları güncellemenize izin verir. Örneğin, OSGi kapsayıcısında sınıfları kaldırabilir ve uygulamayı durdurmadan yeni sürümlerle değiştirebilirim. Hangi OSGi'nin yapmadığı neye ihtiyacınız var?
Peter Lawrey

1) JEE / J2EE referans uygulaması başlamak için bir yer olabilir, ancak daha popüler, kullanımı daha kolay JEE vardır. Demek istediğim, çalışan bir sistemdeki kodu değiştirebilirsiniz. Üretim / kontrollü bir ortamda daha fazlasına ihtiyacınız var.
Peter Lawrey

1
2) Sınıfları yeniden yüklemek OSGi'yi kullandığım tek şey. OSGi'nin ana kullanımı olarak ne görüyorsunuz?
Peter Lawrey

3) JEE'nin asıl amacı bu, kurumsal uygulamaların destekleneceği alandır. JSE, JEE veya diğer uygulamalar için kullanılabilecek temel platformdur.
Peter Lawrey

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.