Java EE 6 - İlkbahar 3 yığını [kapalı]


90

Şimdi yeni bir projeye başlıyorum. Teknolojileri seçmem gerekiyor. Hafif bir şeye ihtiyacım var, bu yüzden EJB veya Seam yok. Öte yandan, JPA (Hibernate veya alternatif) ve IceFaces ile JSF'ye ihtiyacım var.

İlkbahar 3'te Tomcat'e konuşlandırılan böyle bir yığının iyi bir seçim olduğunu düşünüyor musunuz? Veya bir Java EE 6 web uygulaması daha iyi olabilir mi? Korkarım ki Java EE 6, henüz tam olarak belgelenmemiş yeni bir teknoloji. Tomcat'in bakımı Glassfish 3'ten daha kolay görünüyor.

Senin düşüncen nedir? Herhangi bir tecrüben var mı?


8
Ben giderdim primefaces.org ışık istiyorsanız ICEFaces yerine. Çok daha hızlı ve daha düşük bir API'dir.
Shervin Asgari

1
Şu anda JEE6 sağlayan yalnızca Glassfish var. Resin, ihtiyacınız olan şeye bağlı olarak sizin için yeterli olabilecek JEE6 web profilini yavaşça uyguluyor .
Thorbjørn Ravn Andersen

3
@ Thorbjørn Yalnızca web profilini istiyorsanız GlassFish v3 Web Profilini kullanabilirsiniz.
Pascal Thivent

@Pascal, Glassfish yapamayacağını söylemek değil, web profiliyle yaşayabilirseniz (yapabilirim) yakında JEE6'yı almak için Glassfish'e bir alternatif olacağını detaylandırmaktı.
Thorbjørn Ravn Andersen

@ Thorbjørn @ Thorbjørn'u kaldırmayı unuttum :) Yorum, "tam yığın" GFv3'ü kullanmanın tek seçenek olduğunu varsayan OP'ye yönelikti.
Pascal Thivent

Yanıtlar:


101

Hafif bir şeye ihtiyacım var, bu yüzden EJB veya Seam yok.

EJB3'ten bu yana EJB'leri ağır yapan şeyin ne olduğunu açıklar mısınız? 2004'te olmadığımızın farkında mısın? Okumayı çok isterdim senin ışık tanımını ve argümanları (ve oldukça emin söyleyecek birkaç katı şeyler olurdu çünkü ben zevkle benim cevap güncellenir).

Öte yandan, JPA (Hibernate veya alternatif) ve IceFaces ile JSF'ye ihtiyacım var.

JSF 2.0, JPA 2.0, Bean Validation, EJB 3.1 Lite, CDI, ... içeren Java EE 6 Web Profili bunun için mükemmel olur ve Java EE 6 Web Profili ile oluşturulmuş bir uygulamayı çalıştırmak için GlassFish v3 Web Profilini kullanabilirsiniz. .

Tomcat'e yerleştirilen Spring 3'teki bu tür yığının iyi bir seçim olduğunu düşünüyor musunuz? Veya bir Java EE 6 web uygulaması daha iyi olabilir mi?

Eh, ben bir fikir gibi bir benim kod çalıştırmasına olmayan özel bir platform yerine bir oranla (Java EE) tescilli kap (Bahar). Ve Java EE 6'nın yeterince iyi olduğunu düşünüyorum (ve bu bir örtmece, EJB 3.1 (Lite), JPA 2.0, JSF 2.0, CDI tekmeleme). JSF'ye şüpheci olduğumu ancak ikinci kez baktığımı ve JSF 2.0'ın CDI ile karşılaştırılamayacak kadar farklı olduğunu unutmayın. Ve CDI'ye bakmadıysanız, size harika olduğunu söyleyeyim.

Korkarım ki Java EE 6, henüz tam olarak belgelenmemiş yeni bir teknoloji.

Java EE bana oldukça iyi belgelenmiş görünüyor. Bu, ücretsiz bir hak talebine benziyor. Ve inanın ya da inanmayın, Java EE kolaylaşırken Bahar'ın karmaşıklaştığını görmeye başladım .

Tomcat'in bakımı Glassfish 3'ten daha kolay görünüyor.

Bir şey denedin mi Herhangi bir sorunla karşılaştın mı? Yine, bu ücretsiz talep gibi geliyor.


2
JBoss üzerinde Drools, GraniteDS ve daha fazlası ile EJB3.0 + Seam ile geliştirilen değerlendirici büyük projenin hemen peşindeyim. Seam kayalarına katılıyorum! Ancak geliştirmenin% 50'sini yeniden dağıtım, sunucuları yeniden başlatma, dağıtım hataları, geçici dizinleri temizleme vb. İçin harcadım. Öte yandan, JBoss Tools performansı gerçekten zayıftı (yani gerçekten - ctrl + boşluk ve 10 sn kilitleniyor) Bu gerçekten beni JEE6 kullanmam için cesaretlendiriyor Seam çerçevesinden ödünç alınmış gibi görünüyor. Sunucuya gelince, konecion havuzları, jndi, jms, jmx, ear dağıtımı hakkında düşünmek istemiyorum. WAR'ı açıp saniyeler içinde çalıştırmak için bir şeye ihtiyacım var.
Piotr Gwiazda

6
@peperg Gaving King, CDI'nin (Weld, RI'dır) spesifik lideridir, bu nedenle Seam ve CDI arasındaki benzerlikleri bulacaksınız. Ama CDI! = Seam, Java EE 6! = Seam, algınız yanlış. Belki GlassFish v3 Web Profilini deneyin, şaşıracaksınız (ve bağlantı havuzu tanımlandıktan sonra endişelenecek çok şey yok).
Pascal Thivent

8
İnsanların EJB'lerin ağır olduğunu söylemesi ne? EJB v3.1 kullanıyorum ve bunlar sadece açıklamalı pojolar. Ağır dedikleri zaman performansta ne demek istiyorlar?
arg20

13
@ arg20 - Bu gerçekten büyük soru ve Pascal haklı olarak bu bağlamda "ağır" (veya "hafif") teriminin ne anlama geldiğini açıklamasını istiyor. Büyük olasılıkla, Bahar ve EJB arasındaki eski çekişmenin geri kalanı. İlk günlerde EJB1 ve 2 kavramsal olarak ağırdı. Uzak ve durum bilgili fasulye üzerine aşırı vurgu, gülünç derecede ayrıntılı bir XML dağıtım tanımlayıcısı ve uygulanması gereken tamamen çılgın miktarda gerekli arabirimler onlara çok kötü bir itibar kazandırdı. EJB3 (2006) ile bu tamamen değişti, ancak 2004'te Bahar için EJB'den ayrılanlar bazen hala 2004'ün ve EJB2'nin en son olduğunu düşünüyor.
Arjan Tijms

7
Spring'in yaklaşık sayfasında "Biz inanıyoruz: J2EE'nin kullanımı daha kolay olmalı" yazıyor. Java EE 5'in yayımlanmasından bu yana doğru ad olan "Java EE" terimini değil "J2EE" terimini kullandıklarını unutmayın (sanırım). Bu onlar hakkında çok şey söylüyor ...
Vítor E. Silva Souza

32

JavaEE6 kullanmadım.

Bununla birlikte, JavaEE ve EJB'nin önceki tüm sürümleri tarafından yeterince kötü bir şekilde dövüldüm, kendisini sadece de jure standardı değil, fiili standart olarak kabul edene kadar ona güvenmeyeceğim. Şu anda, Bahar hala fiili standarttır.

Beni bir kez kandır, utan sana. Beni iki kez kandır, utan bana. Beni üç kez kandır, EJB.

Bazıları Bahar'ın tescilli olduğunu iddia edecek. JavaEE özelliklerinin satıcı uygulamalarının, daha fazla olmasa da, aynı şekilde tescilli olduğunu iddia ediyorum.

Yakın zamanda bir grup Java Uygulamasını JBoss'tan Weblogic'e taşımada büyük bir dönüşüm gerçekleştirdim. Tüm Spring / Hibernate uygulamaları, ihtiyaç duydukları tüm kitaplıklara sahip oldukları için sıfır değişiklikle taşınmıştır. JPA, EJB ve JSF kullanan tüm uygulamalar, bağlantı için bir felaketti. Uygulama sunucuları arasındaki JPA, EJB ve JSF yorumlarındaki küçük farklılıklar, düzeltilmesi sonsuza kadar süren her türlü kötü hataya neden oldu. JNDI adlandırma kadar basit bir şey bile AppServers arasında tamamen farklıydı.

Bahar bir uygulamadır. JavaEE bir özelliktir. Bu BÜYÜK bir farktır. Spesifikasyon% 100 hava sızdırmazsa ve satıcıların bu spesifikasyonu uygulama biçiminde kesinlikle hiçbir kıpırdama alanı vermediyse bir spesifikasyon kullanmayı tercih ederim. Ancak JavaEE spesifikasyonu hiç böyle olmadı. Belki JavaEE6 daha hava geçirmezdir? Bilmiyorum. WAR'nızda ne kadar çok paket yaparsanız ve AppServer kitaplıklarına ne kadar az bağımlı olursanız, uygulamanız o kadar taşınabilir olur ve sonuçta, Dot-NET'i değil Java'yı kullanmamın nedeni budur.

Spesifikasyon hava geçirmez olsa bile, tüm uygulamalarımdaki tüm teknoloji yığınlarımı yükseltmek zorunda kalmadan uygulama sunucusunu yükseltmek güzel olurdu. JBoss 4.2'den JBoss 7.0'a yükseltmek istersem, JSF'nin yeni sürümünün tüm uygulamalarım üzerindeki etkisini göz önünde bulundurmalıyım. Spring-MVC (veya Struts) uygulamalarım üzerindeki etkisini düşünmek zorunda değilim.


1
Kesinlikle, bu harika bir mantıktır.
Palesz

1
Bu mantığa katılıyorum, karşılaştığım birçok sorun, bir konteynerin bir spesifikasyonun uygulanmasına bağımlılıklarla ilgili olmuştur. Gömülü kitaplıklardan önemli ölçüde daha az acı. Spesifikasyonun felsefi tercihi dışında tartışmak zor.
Peter Porter

Harika bir mantık. Ancak bu, JEE 6'dan sonra bile deneyiminiz mi? Spesifikasyonların Uygulama Sunucusu uygulamalarının hala bir sorun olabileceğini anlıyorum - bu nedenle, App Server 1 tarafından uygulanan aynı spesifikasyon, Uygulama Sunucusu 2 için olmasa da basit ve verimli olabilir
Soumya

1
+1. ayrıca uygulama sunucusu, ilkbahar / hazırda bekletme modunun geliştiricilerin kontrolü altında olduğu Operasyon programına göre değişir. büyük bir şirket ortamında uygulama sunucusunu yükseltmek çok daha önemli bir iştir.
Nathan Hughes

Dot-Net konusunu gerçekten anlamadım. Spring kadar tescillidir ve Microsoft olan tek bir satıcı tarafından geliştirilmiştir. Lütfen açıklanabilir mi?
user1339260

23

Önemli değil. Java EE 6 yeterince iyi ve oradaki profiller nedeniyle "ağır" değil - sadece web profilini kullanıyor olacaksınız.

Şahsen ben baharı tercih ederim. Ama Java EE 6'ya karşı mantıklı argümanlar tükeniyor :)

(Bir yorum tarafından hatırlatıldığı gibi - RichFaces , ICEfaces ve / veya PrimeFaces'i denemek isteyebilirsiniz. - ihtiyacınız olan bileşenlere bağlı ).


1
Öyleyse soru şu: "Tam yığın Glassfish Uygulama Sunucusunu kullanmak web profilini de kullanmak mantıklı mı?"?
Piotr Gwiazda

1
@peperg Yalnızca web profilini istiyorsanız GlassFish v3 Web Profilini kullanın, cevabıma bakın.
Pascal Thivent

Burada stackoverflow.com/questions/2822812/spring-3-0-vs-j2ee-6-0/… yerine "nasıl üretime alınacağı" bakış açısından ele alınan bazı argümanlar yayınladım . Yani belki bu, argümanlarınızı biraz doldurur.
Oliver Drotbohm

@peperq, JBoss 6 tatillerde yayınlandı.
Thorbjørn Ravn Andersen

17

Son zamanlarda, istemci atamalarımdan biri, Spring Stack Vs Custom çerçeve yığını ile bir Java EE Standartları arasında değerlendirmeyi içeriyordu. Bir aylık değerlendirme ve prototiplemeden sonra, sadece mutlu değildim, aynı zamanda Java EE 6 özellik seti beni şaşırttı. 2011'de ve ileriye dönük herhangi bir yeni "kurumsal" proje mimarisi için, Java EE 6 ve Seam 3 gibi potansiyel uzantıları veya yaklaşan Apache JSR299 uzantı projesini tercih ederim. Java EE 6 Mimarisi, modernleştirilmiştir ve son birkaç yılda gelişen birçok açık kaynak fikrinin en iyisini içerir.

Kutunun dışında şu özellikleri göz önünde bulundurun: Olay Yönetimi, Bağlamlar ve DI, Durdurucular, Dekoratörler, RESTful web hizmetleri, gömülebilir kapsayıcı ile entegre test, Güvenlik ve daha fazlası.

Sonuçlarımın çoğu blogumda yayınlandı yararlı bulabileceğiniz Java EE 6'nın temel kavramlarını açıklayan blogumda .

Elbette bir çerçeve seçmenin zor ve hızlı bir kuralı yoktur. Java EE 6, zengin bir konuşma oturumu durumu gerektirmeyen daha basit "web siteleri" için oldukça şişirilebilir. Grails veya Play'i seçebilirsin! Çerçeve. Ancak konuşmalı web uygulamaları için Java EE 6'nın neden uygun olmadığı konusunda daha iyi bir argüman göremiyorum.


Java EE 6 acayip yavaş, cam balığı ve cam balığı web profili onları iskele / tomcat / her neyse ile karşılaştırmaya başlamak için gerçekten yavaş. Test, gömülebilir konteyner de gerçekten yavaştır.
Palesz

15

Şimdi, bir süre sonra yığınlarla ilgili deneyimim var:

  • Java EE 5 + Seam + GraniteDS + Flex
  • Bahar 3 + Vaadin (GWT'de)
  • Yay 3 + JSF 2.0 (PrimeFaces)

Anlaşmalarım:

  • Spring 3, Seam'den (neredeyse Java EE 6) çok daha basittir ve Tomcat ve Jetty'de çalışır! (Maven eklentisi ile geliştirme için iskele bir hazinedir).
  • Flex'i seviyorum (aslında uzun süredir Flex geliştiricisiydim, bu yüzden önyargılıyım) ve zengin bir arayüze ihtiyacınız varsa ve FlashBuilder'ı satın alabiliyorsanız bunu kullanın, ancak bunu Spring + GraniteDS veya BlazeDs arka ucunu kullanın. FlashBuilder'ı satın alamıyorsanız zamanınızı boşa harcamayın.
  • Vaadin harika !. Geliştirme süreci Flex'ten daha basittir, ancak HTML karmaşası olmadan kolayca zengin uygulama oluşturabilirsiniz. Tek bir JS satırı yazmayacaksınız. Sadece biraz CSS'ye ihtiyacınız var (Flex'te de buna ihtiyacınız var). Dolayısıyla, uygulama arayüzünüz masaüstü uygulaması gibi davranacaksa ve Flex'i kullanamıyorsanız (veya kullanmak istemiyorsanız) - Vaadin'i kullanın. Uyarı! Vaadin'in tarayıcı için büyük JS ek yükü vardır.
  • Daha basit web sitesi benzeri bir uygulama oluşturursanız, JSF2.0'ı kullanın (yukarıdaki gibi yay arka uç ile). HTML ile savaşmanız gerekecek (bundan nefret ediyorum) ve zengin arayüz oluşturmak Vaadin'den (özellikle düzenler) daha zor olacaktır. Daha yavaş tarayıcılar / bilgisayarlar için hafif HTML alacaksınız. PrimeFaces'i seviyorum - kolay ve iyi belgelenmiş. İkincilik IceFaces
  • HTML'ye hayat vermeniz gereken (tarayıcıya uyan kurumsal uygulama oluşturmak yerine) bir web sitesi (web uygulaması DEĞİL) oluşturursanız, Wicket (bileşen tabanlı tercih ediyorsanız, çekme tutumu) veya SpringMVC (şablon tabanlı tercih ediyorsanız , itme tavrı) veya sadece Play'i kullanın! çerçeve. Zengin veri tabanlı bileşenler oluşturmanın çok daha zor olacağını, ancak her html etiketi üzerinde kontrol sahibi olacağınızı unutmayın (HTML / Grafik tasarımcınız buna bayılacak)

21
Kendi cevabınızın soruyla nasıl bir ilişkisi olduğunu anlamıyorum ...
Pere Villega 18'11

1
-1 Java EE 6'dan bahsetmediği için bu cevabı kabul etmek çok uygunsuz görünüyor. Dahası, @Pascal Thievent'in iyi düşünülmüş (ve çok daha fazla oy kullanan) yazısında öne çıkan noktaların hiçbirine değinmiyor. Cevap.
user359996

1
Aslında soru daha geçerli değil. JEE 6 artık çok olgun, soru sorulduğunda Mart 2010'da değildi.
Piotr Gwiazda

@PiotrGwiazda o zamandan beri JEE 6 ne şekilde değişti? O zamanlar insanlar bundan daha çok korkuyorlardı, ama temelde aynı JEE
6'ydı

1
JEE6 uygulamalarının daha olgun ve kullanılabilir olduğunu kastettim. JBoss 7 artık kararlıdır ve daha fazla uygulama mevcuttur. Topluluk artık daha büyük. Artık daha fazla araç ve kitaplık JEE 6 yığınını destekliyor.
Piotr Gwiazda

8

Adam Bien'in Enterprise Java'nın Geleceği ... Is Clear (Yaylı / Yaysız Java EE ve Vice Versa) , madalyonun her iki yüzünü de almak için yorumlar dahil okuyun. Bahar'ı birkaç nedenden dolayı seçeceğim ve bunlardan biri (gönderideki yorumlardan birini yeniden oluşturmak)

'Hangi Java EE 6 sunucusundan bahsettiğinizden emin değilim. Glassfish sertifikalı ve TMAX JEUS var. WebSphere, WebLogic, JBoss vb'nin Java EE 6 uyumlu sürümlerinin üretime geçmesi ve gerçek uygulama için kullanılabilmesi epey zaman alacak (okundu: yıl). Spring 3 yalnızca Java 1.5 ve J2EE 1.4'e ihtiyaç duyar, bu nedenle neredeyse tüm ortamlarda kolayca kullanılabilir '


6
Neredeyse tam bir yıl sonrayız ve Java EE 6'yı destekleyen JBoss AS 6 şu anda üretimde kullanılıyor.
Arjan Tijms

8

Benim fikrim başkalarının bahsetmediği bir şeye, yani işimdeki kodun onlarca yıldır (kelimenin tam anlamıyla) yaşama eğiliminde olduğuna ve dolayısıyla bakımın bizim için çok önemli olduğuna dayanıyor. Kendi kodumuzun ve kullandığımız kitaplıkların bakımı. Kendi kodumuzu kontrol ediyoruz, ancak kullandığımız kitaplıkların başkaları tarafından bakımı bizim çıkarımıza. yukarıda belirtilen on yıllar veya daha uzun bir süre boyunca .

Uzun lafın kısası, bunu başarmanın en iyi yolunun, ham JVM'ye kadar Sun spesifikasyonlarının açık kaynak uygulamalarını kullanmak olduğu sonucuna vardım.

Açık kaynak uygulamalarından Apache Jakarta, kitaplıklarını koruduğunu kanıtladı ve son zamanlarda Sun, Glassfish v3 için yüksek kaliteli uygulamalar üretme konusunda pek çok çalışma yaptı. Her halükarda, tüm modüller için de kaynağa sahibiz, bu yüzden eğer diğerleri başarısız olursa, onları kendimiz koruyabiliriz.

Sun spesifikasyonları genellikle çok katıdır, yani spesifikasyona uygun uygulamaların kolaylıkla değiştirilebileceği anlamına gelir. Sadece servlet konteynerlerine bir göz atın.

Bu özel durumda, JavaServer Faces'e bir göz atmanızı öneririm, çünkü Java EE 6'nın bir parçasıdır, yani çok, çok uzun bir süre kullanılabilir ve korunur. Daha sonra bazı yararlı eklemeler sağladığı için MyFaces Tomahawk ile büyütmeyi seçtik ve bu bir jakarta projesi.

JBoss Seam veya diğerlerinde hiçbir sorun yok. Bizim için çok önemli olan bakım konusuna daha az odaklanmalarıdır.


Java EE 6'daki Java ServerFaces 2'nin, JSF 1 ile Tomahawk'a ihtiyacımız olan şeyi kendi başına yapabileceği ortaya çıktı. Oldukça yetenekli bir çerçeve (ancak biraz XML ağır)
Thorbjørn Ravn Andersen

Harika bir nokta, ne yazık ki insanlar, yazılımın onlarca yıldır yaşamak için yapıldığını ve uzun vadeli desteğin çok önemli bir anahtar olduğunu unutuyor.
timmz

6

Zaten sahipseniz, Spring'i kullandığınızı görebiliyorum, ancak yeni proje için ne anlamı var? Doğrudan Java EE 6 (ejb3, jsf2.0, vb.) İle giderdim

Müşterinin Flex konusunda sorunu yoksa, onun için gidin. BlazeDS veya benzerini kullanın - mvc kullanmayın. Bu kısımda daha fazla zaman harcayabilirsiniz (sunucu ile istemci arasında veri alışverişi) ancak her iki tarafta da tam kontrole sahipsiniz.

Tarayıcınızı öldürmek istemediğiniz sürece Vaadin'i kullanmayın. Ayrıca, sayfalarınız daha karmaşık hale geldiğinde kodun etrafından dolaşmak için daha fazla zaman harcarsınız. Ayrıca, zihniyetinizin tamamen değiştirilmesi gerekecek ve standart ön uç geliştirme hakkında bildiğiniz her şey boşa gidecek. HTML veya JS kullanmak zorunda olmadığınız argümanı pek mantıklı değil. Kullanmasanız bile yine de bilmeniz gerekir. Sonunda HTML ve JS'ye dönüşür. Sonra hatalarını gidermeye çalışın - basit şeyler için birkaç gününüz olduğundan emin olun. Artı, html / js'yi bilmeyen bir web geliştiricisini hayal edemiyorum.

İnsanların Java EE'yi doğrudan kullanmak yerine neden tüm bu soyutlamaları denediğini anlamıyorum.


5

Neden hala EJB'nin 2010'da ağır olduğu konusunda söylentiler var? Görünüşe göre insanlar Java EE teknolojilerinde güncellenmiyor. Sadece deneyin, Java EE 6'da işlerin nasıl basitleştirildiğine çok şaşıracaksınız.


4

Sorularınızın cevabı proje gereksinimlerinize bağlıdır. Mesaj kuyrukları, konteyner tarafından yönetilen global işlemler vb. Java EE özelliklerine ihtiyacınız yoksa tomcat + spring ile gidin.

Ayrıca deneyimlerime dayanarak, çok fazla web hizmeti entegrasyonu, zamanlama, mesaj kuyrukları gerektiren projelerin en iyi Java EE yığını kullanılarak en iyi şekilde yapıldığını buldum. İşin iyi yanı, yay kullanarak bir uygulama sunucusunda çalışan Java EE modülleri ile entegre olabilmenizdir.

Java EE 6, önceki sürümlerden çok farklı ve gerçekten her şeyi çok daha kolay hale getiriyor. Java EE 6, çeşitli Java topluluğundan en iyi fikirleri birleştirir - örneğin Spring çerçevesinden Rod Johnson, Java EE 6'da Dependency Injection JSR'nin yapımında aktif olarak yer aldı. Java EE 6 kullanmanın bir yararı, buna göre kodlama yapıyor olmanızdır. bazı organizasyonlarda satıcı desteği vb. için önemli olabilecek bir standart.

GlassFish v3, Java EE 6'yı destekler ve oldukça hafiftir ve gerçekten hızlı başlar. Geliştirmelerim için glassfish v3 kullanıyorum ve yapılandırması gerçekten çok kolay. Sunucunuzu grafiksel olarak yönetmenize olanak tanıyan oldukça kullanıcı dostu bir yönetici konsoluyla birlikte gelir.

GlassfishV3 ve JSF 2 kullanıyorsanız, Java EE 6'nın, JSF'de kolayca konuşmalar (örneğin, sihirbaz benzeri sayfalar) oluşturmanıza izin veren CDI özelliklerinden yararlanabilirsiniz.

Bununla birlikte, Java EE 6'yı kullanmak, yeni bir API öğrenmenizi de gerektirir. Mevcut zaman dilimine bağlı olarak, sizin için en iyi seçim olmayabilir. Tomcat yıllardır ortalıkta ve tomcat + yay kombinasyonu birçok web projesi tarafından benimsendi, bu da birçok dokümantasyon / forumun etrafta olduğu anlamına geliyor.


İlk cümlenize katılmıyorum, seçim JMS kullanıp kullanmamakla ilgili değil. Ve JSR-330'un Java EE 6'da o kadar önemli olduğunu sanmıyorum (politik nedenlerden dolayı daha fazla var), önemli olan JSR-299 (CDI). En azından benim fikrim bu.
Pascal Thivent

JSR330'u içeren bazı politikalar olduğu konusunda hemfikir olun - yine de DI'yi yalnızca JEE teknolojisi yapmak yerine Java'da (SE veya EE) bağımlılık enjeksiyonu için ortak bir temel sağladığından oldukça önemlidir. Ayrıca, Spring çerçevesi ve Google Guice tarafından desteklenmektedir; bu, Spring / Guice kodunun JEE6'ya aktarılmasını kolaylaştıracağı veya tam tersi olacağı anlamına gelir. JSR299, JSR330'daki özellikleri genişletmek için de tasarlanmıştır. JEE6'daki web uygulamaları için JSR299 kesinlikle çok önemlidir. Bu iki JSR sayesinde, JEE6 ve Spring'in her ikisi de çok benzer programlama modeline sahiptir. Yorumunuz için teşekkürler!
Raz

3

Hem Spring hem de Java EE 6'da çalıştım. Deneyimlerime göre söyleyebileceğim şey, eski JSP veya tescilli Flex için gidiyorsanız, Spring ile kalırsanız güvende olursunuz.

Ancak JSF ile ilerleyecekseniz, Java EE 6'ya geçme zamanı. Java EE 6 ile Facelets'e ve standartlaştırılmış komut dosyası kitaplıklarına ve bileşen kitaplıklarına geçersiniz. Artık komut dosyası uyumsuzlukları ve bileşen kitaplığı matrisleri yok.

Spring MVC ile ilgili olarak, projeniz çok büyümediği sürece iyidir. Java EE 6'ya bağlı büyük bir kurumsal uygulama ise, kendi bileşen kitaplıklarınızı ve kaynak paketlerinizi düzenli bir şekilde tutmanın tek yolu budur.


1
Yorumun için teşekkürler. Benim seçimim Spring + Vaadin idi.
Piotr Gwiazda

3

Java EE tam yığınına ihtiyacınız varsa size GlassFish 3.1'i öneririm. Java EE 6'nın (JBoss 6, WebLogic 10.3.4) bir kısmını veya tamamını uygulayan diğer Java EE kapsayıcılarına kıyasla çok hızlı başlar, yeniden dağıtım saniyeler sürer ve hemen hemen tümü yapılandırma yerine konvansiyonel olarak yapılabilir, çok kolay.

"Hafif" bir şey istiyorsanız, bir Apache Tomcat 7.x'i istediğiniz özelliklerle özelleştirebilirsiniz. Aşağıdaki kitaplıklarla çok kullandım: Kaynak 1.1.0 (CDI) JPA 2.0 (Hazırda Bekletme 3.6.x) - yalnızca kaynak yerel işlemleri JSF 2.x (Mojarra) RichFaces 4.0 BIRT çalışma zamanı

Son 10 yıldır bir Java EE geliştiricisi olan (erken EJB, JSF ve web teknolojilerinden muzdaripim), Java EE 6 çok kolay, iyi birleşik ve mevcut donanım sorunsuz çalışıyor, bu nedenle Spring'i motive eden orijinal nedenler artık geçerli değil.


1
Cevabını beğendim Çok makul. Soruyu gönderdiğimde JEE6 çok gençti ve Tomcat 7 henüz bitmemişti. "Baharı motive eden orijinal nedenler artık geçerli değil" - bu doğru, ancak CDI ile JEE6'nın katlanması için biraz zamana ihtiyacı var. Örneğin: Javamelody izleme Spring ve Guice için mevcuttur (Onsuz uygulamalarda endişelenmeyi hayal edemiyorum). EHcache Spring için kullanılabilir (önbelleğe alma yöntemleri sonuçlarını kastediyorum). İlkbaharda görünüm programlama gibi pek çok şey daha kolay, çünkü birçok üçüncü taraf kitaplığı ve çerçevesi Spring ile kolayca entegre oluyor, ancak henüz JEE6 ile değil.
Piotr Gwiazda

1

Yine de baharı tercih ederim.

Ve JSF'yi aktarırdım. Bence bu ölü bir teknoloji. Spring MVC daha iyi bir alternatif olabilir. Flex de öyle. Sözleşmenin ilk XML hizmetleri açısından düşünün ve arka ucu kullanıcı arayüzünden tamamen ayırabilirsiniz.


1
Java + Flex ve PHP + Flex ile bazı uygulamalar oluşturdum ve bunun zengin arayüzler için en iyi çözüm olduğuna katılıyorum. Ancak bu uygulamada Flex'i kullanamıyorum :( Yine de bazı üst düzey arayüzlere ihtiyacım var, bu yüzden Spring MVC bir çözüm değil. Bir döngüdeki <tr> <td> yerine sıralanabilir veri hakkında düşünmek istiyorum.
Piotr Gwiazda

1
@duffymo - Flex'in iyi bir seçim olup olmadığını tartışabilirim. JSF, özellikle zengin yüzler, ilk yüzler, buz yüzleri vb. Gibi kütüphanelerle kesinlikle ölmedi.
Bozho

1
IceFaces'te menüler, ağaçlar, veri etiketleri oluşturuyorum, eylemler, olaylar kullanıyorum ve sayfanın yeniden yüklenip yüklenmediğini veya ajax isteği olup olmadığını düşünmüyorum. Sıralanabilir bir datagrid veya ajax yüklü ağaç, yerleşik bir bileşendir. Spring MVC'de HTML - tablolar, listeler vb. Üzerinde çalışıyorum. Bazı üçüncü taraf javascript çerçevesini kullanmam ve elle AJAX sihri oluşturmam gerekiyor. Bunu Flex'te yapmak isterdim ama bu politik / ticari bir karar - benim değil.
Piotr Gwiazda

1
Şu anki iki JSF projem kesinlikle ölmedi;) Ve Flex'i kullanmaktan çok JSF'nin RIA oluşturmanın ("zengin yüzler" açısından "zengin") yönteminden çok daha memnunum. Hatta biri önümüzdeki hafta halka açılacak.
Bozho

2
Neden hala Spring'i tercih ettiğinizi öğrenmek istiyorum, Java EE 6 çok iyi. Java'nın geleceği için açık bir platformda çalışmanın önemli olduğunu düşünmüyor musunuz?
Pascal Thivent

0

Glassfish v3 ve Weld'in daha olgun hale gelmesini bekleyemezseniz Spring + Tomcat'i tavsiye ederim. Şu anda cam balığı CDI etkin uygulamalarla çalıştırılırken bellek tüketimi / işlemci yükü ile ilgili birkaç sorun var.


0

Her şeyi okumadım ama sadece şimdi EJB3'ü bir Java EE 6 savaşında kullanabileceğinizi ve böylece Tomcat üzerinde EJB3'ü kullanabileceğinizi söylemek için (sanırım).


Evet, Java EE 6'da EJB'leri bir WAR'da paketleyebilirsiniz ancak bu, Tomcat'te böyle bir WAR konuşlandırabileceğiniz anlamına gelmez. Web Profili uygulayan bir konteynere ihtiyacınız var ve Tomcat bunu yapmıyor ve Tomcat topluluğunda bunu uygulamak için bir plan yok (bkz. Old.nabble.com/Java-EE-6-Web-Profile-td27715793.html ). Ama GlassFish v3 Web Profili var, Resin olacak ...
Pascal Thivent

2
güncelleme: TomEE + projesine bir göz atın tomee.apache.org/apache-tomee.html
gpilotino

-3

Size Bahar ile Tomcat'i tavsiye ettim çünkü:

  1. Bahar, JSP için destek çekirdekleri oluşturabilir
  2. JPA yoluyla nesneyi kalıcı hale getirmek için Spring'i kullanacaksınız

Tomcat'i seçmek iyi bir seçimdir çünkü herhangi bir ağır işlemeye ihtiyacınız yoktur


1
"Ağır işlem" mi? Detaylandırır mısın Merak ediyorum.
Pascal Thivent
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.