Apakah Anda, saat ini, menggunakan JBoss atau Glassfish (atau lainnya) sebagai server Java EE untuk proyek baru? [Tutup]

136

Jika Anda memulai proyek Java EE baru hari ini yang akan selesai dalam waktu sekitar satu tahun, server aplikasi mana yang akan Anda pilih dan mengapa?

Sebagian dari jawaban Anda harus menyertakan argumen Anda untuk keputusan Anda. Dan juga seberapa banyak pengalaman yang Anda miliki dengan server Java EE yang Anda pilih dan dengan server lain yang tersedia di pasar. Ini menarik karena kami semua memahami penyelidikan dan pemikiran yang dimasukkan ke dalam jawaban Anda.

pengguna14070
sumber

Jawaban:

181

Saya telah menggunakan WebLogic, WebSphere, JBoss, GlassFish, Resin, Jetty, Tomcat, dan beberapa lainnya selama 10+ tahun terakhir. Jadi, jika saya sedang mempertimbangkan proyek baru, saya akan bertanya pada diri sendiri beberapa pertanyaan terlebih dahulu. Satu hal yang tidak akan saya pertanyakan lagi adalah bahwa saya akan menolak menggunakan JSP kecuali saya disiksa sampai saya menangis untuk ibu saya.

Apakah saya harus kompatibel / menerapkan produk tertentu karena mandat seseorang? Apakah tidak ada cara untuk mengabaikan mereka atau meyakinkan mereka sebaliknya? Jika demikian, itulah jawabannya.

Apakah saya harus menggunakan EJB? Betulkah? Hindari mereka jika memungkinkan - mereka benar-benar hanya diperlukan untuk sistem kelas perusahaan yang sangat besar. Ingatlah bahwa mereka hanyalah alat, dan yang besar pada hal itu (adakah yang bisa mengatakan "Palu Emas"?). Mereka sangat digunakan secara berlebihan, jadi sungguh, pertanyakan apakah Anda membutuhkannya. Jika Anda membutuhkannya, maka itu menghapus beberapa opsi Anda termasuk favorit saya, Jetty.

Apakah Anda harus menggunakan teknologi J2EE utama lainnya seperti JMS, ESB, dll? Jika demikian, dan Anda benar-benar tidak dapat melakukannya, maka Anda lagi-lagi dibatasi ke container J2EE yang lengkap. Pikirkan dan selidiki dengan hati-hati sebelum Anda berkomitmen pada BPM, misalnya, dan hindari AquaLogic BPM di (hampir) semua biaya - ini sangat buruk.

Jika Anda benar-benar harus menggunakan container J2EE yang lengkap, pertimbangkan open-source terlebih dahulu karena lebih kuat, lebih didukung, dan lebih hemat biaya. Mereka memiliki basis pelanggan yang lebih besar dan interaksi dukungan yang lebih terbuka, sehingga mereka cenderung mendapatkan perbaikan yang lebih baik lebih cepat. Namun, Resin belum matang dan saya akan menghindarinya relatif terhadap GlassFish atau JBoss - saya merasa bermasalah untuk diterapkan dan didukung. Saya lebih memilih JBoss karena basis pelanggannya yang lebih luas, kedewasaan, dll. GlassFish lebih sulit untuk digabungkan ke dalam proses pembuatan / penerapan otomatis, tetapi mungkin lebih baik untuk beberapa fitur spesifiknya (jika Anda membutuhkannya).

Apakah saya punya alasan khusus untuk membutuhkan Apache? Kemudian bersandar ke Tomcat, mungkin ditambah sesuatu.

Bisakah saya puas hanya dengan servlet? Kemudian saya akan menggunakan Jetty - ini adalah solusi paling ringan, tercepat, termudah, dan paling fleksibel. Jika saya bersandar pada kemampuan untuk menggunakan Jetty, saya akan mempertanyakan semua asumsi saya mengapa. YAGNI berlaku.

Yang terbaik adalah menggunakan StringTemplate / WebStringTemplate di Jetty: solusi yang bersih, kuat, cepat, dapat dipelihara tanpa biaya lisensi, reputasi dan dukungan yang solid, dll. Di situlah saya mulai saat ini.

Sebagian besar aplikasi / sistem memilih banyak fitur J2EE yang mewah ketika yang mereka butuhkan hanyalah servlet dan JDBC dengan arsitektur / desain yang layak. Pertanyakan mengapa Anda merasa membutuhkan lebih banyak.

Dari penampung penuh, saya akan menghindari WebLogic dan WebSphere kecuali Anda mendukung situs web publik UTAMA (situs web perusahaan saya saat ini digunakan di WebLogic dan mendapat sebelas + juta klik per bulan, yang lain sebanding). Klaim nyata untuk ketenaran WebLogic adalah pengelompokannya yang relatif mudah, tetapi hindari fitur penguncian vendor milik mereka di (hampir) semua biaya. WebSphere hanyalah mimpi buruk yang akan saya hindari secara harfiah dengan cara apa pun - saya menolak untuk melakukan proyek yang melibatkan WebSphere setelah melakukan beberapa di masa lalu. Tidak ada produk yang sebanding dengan biaya lisensi yang sangat besar, kecuali Anda benar-benar memiliki kebutuhan khusus yang mendorong penggunaan fitur berpemilik. Dalam satu dekade sebagai arsitek / insinyur senior di banyak perusahaan Fortune 500, saya belum melihat kebutuhan seperti itu. Di samping itu,

Bahkan untuk situs publik yang sangat besar, lalu lintas tinggi, produk berpemiliknya masih dipertanyakan. Saya lebih suka menghabiskan jutaan dolar per tahun untuk biaya lisensi untuk beberapa perangkat keras yang bagus dan waktu yang berkualitas dari beberapa konsultan yang sangat bagus untuk menangani solusi skalabilitas sederhana. Jutaan ekstra per tahun kemudian dapat digunakan untuk menghasilkan sesuatu yang layak dijual di situs web yang bagus itu ...

EDIT: bagian lain untuk dipertimbangkan ...

Saya baru-baru ini menemukan Terracotta . Saya memikirkan kembali segalanya, dan ingin segera menerapkannya dalam sistem yang signifikan. Secara khusus, Terracotta melakukan pengelompokan lebih baik dari apa pun, jadi saya TIDAK LAGI merekomendasikan WebLogic untuk pengelompokannya.

Rob Williams
sumber
7
Untuk referensi di masa mendatang, Anda biasanya dapat menemukan definisi akronim melalui pencarian Google atau Wikipedia. YAGNI = Anda Tidak Membutuhkannya = Jangan berlebihan desain Anda JMS = Layanan Pesan Java ESB = Bus Layanan Perusahaan BPM = Manajemen Proses Bisnis
Rob Williams
21
Komentar Anda tentang Java EE dan EJB agak ketinggalan jaman. J2EE ?! Itu seperti 5 tahun yang lalu. Lihatlah Java EE 6, dan modernisasikan perspektif Anda!
Brian Leathem
6
@ Brian: Saya setuju dengan Brian, terutama dengan EJBLite, bobotnya menjadi jauh lebih ringan.
Thang Pham
7
@ Brian, lihat posnya - ini ditulis tiga tahun sebelum komentar Anda. Dan saya masih akan mengatakan bahwa Spring lebih ringan daripada Java EE yang ramping.
duffymo
2
Apa putusan sekarang di tahun 2012? Apakah JBoss 7 AS menjadi raja atas Glassfish di ranah Java 6 EE? Atau sebaliknya?
Rolando
10

Istilah "server aplikasi" tidak jelas. Dengan GlassFish v3, Anda dapat memulai dari yang kecil dengan, katakanlah, wadah web tradisional dan berevolusi (menggunakan OSGi dan fungsionalitas "tambahkan wadah" sederhana) untuk menambahkan apa pun yang Anda suka: JPA, JAX-RS, EJB's, JTA, JMS, ESB , dll ... Namun itu produk yang sama, antarmuka admin yang sama, dll. Apakah ini memenuhi syarat sebagai server aplikasi bagi Anda? -Alexis (Matahari)

Alexis MP
sumber
1
Sayangnya Glassfish bukan produk resmi lagi, tetapi "hanya" implementasi referensi.
Thorbjørn Ravn Andersen
9

Pertanyaan pertama yang biasanya saya tanyakan pada diri sendiri adalah "Bisakah saya melakukan ini dengan Tomcat?". Jika jawabannya tidak karena saya membutuhkan JMS atau JTA maka saya menggunakan server aplikasi.

Saya menggunakan WebLogic 8 sekitar 3 tahun yang lalu senang dengan kemudahan penggunaan WebLogic dan model lisensi / biaya. Kami menggunakannya untuk dua proyek, satu adalah layanan web dan yang lainnya adalah portal. Kami tidak mengalami masalah apa pun dengan WebLogic atau WebLogic Portal di salah satu proyek tersebut.

Selama dua tahun terakhir saya bekerja dengan WebSphere. Setiap kali saya bernegosiasi dengan IBM, itu selalu berakhir dengan biaya dua kali lipat dari setara WebLogic tetapi kebijakan perusahaan menentukan WebSphere harus digunakan. Saya menemukan kurva pembelajaran di WebSphere jauh lebih curam daripada WebLogic dan siklus hidup build / deploy / test kami sangat memakan waktu sehingga kami menggunakan Tomcat di lingkungan pengembangan. Tetapi masalah terbesar yang saya alami dengan WebSphere adalah ketika kami menemukan bug yang memaksa kami untuk meningkatkan ke rilis tambalan berikutnya hanya untuk mengalami masalah baru dalam penguraian web.xml. Butuh shift 48 jam untuk menyelesaikan semua itu.

Saat ini saya menggunakan JBoss. Sekitar 3 bulan yang lalu saya akan memulai proyek baru saya dengan Tomcat dan Jetspeed 2, Tetapi saya perhatikan bahwa Jetspeed 2 tampaknya agak stagnan sekarang dan JBoss Portal 2.7.0 baru saja dirilis dengan dukungan JSR 286 / Portlet 2.0. Saya mencoba JBoss dan merasa sangat mudah untuk mengatur dan mengelola. Siklus build / deploy / test sangat cepat dan saya jarang harus memulai ulang server kecuali saya telah mengubah file Spring XML di suatu tempat.

bmatthews68
sumber
Jawaban bagus! Sudahkah Anda mencoba Jetty? Dan apa pendapat Anda tentang itu jika Anda punya?
7

Saya telah menggunakan jBoss selama 3-4 tahun.

Argumen untuk jBoss:

  1. Sumber terbuka.
  2. Dukungan komersial tersedia.
  3. Komunitas pengguna yang besar dan aktif.

Argumen melawan jBoss:

  1. Tidak ada rilis kontainer Java EE 5 yang didukung akses umum.
  2. Banyak dokumentasi tetapi verbose; mungkin sulit menemukan jawaban untuk "Bagaimana cara saya melakukan x?"
  3. Alat administratif untuk 4,x miskin dibandingkan dengan penawaran komersial lainnya.
johnstok
sumber
"Tidak ada akses umum, rilis kontainer JEE 5 yang didukung." Saya kira itu tidak lagi terjadi, benar?
Raedwald
@Raedwald: ya, sekarang JEE 6 telah ada selama beberapa waktu ;-)
ymajoros
3

Hal lain yang tidak dibahas di sini adalah kinerja. Jika ini menjadi perhatian karena jenis layanan atau karena jumlah pengguna, maka hal berikut akan berlaku:

  • Tomcat tampaknya lebih lambat dari Glassfish
  • Glassfish tampaknya lebih lambat dari Resin
  • Resin jauh lebih lambat dari G-WAN + Java

Perhatikan bahwa G-WAN hanya bergantung pada JVM: ia tidak menggunakan kontainer lebih lanjut (kecuali ditentukan secara eksplisit) sehingga Anda dapat menyimpannya untuk bagian kinerja penting dari aplikasi web Anda.

Karena G-WAN mendukung bahasa lain (C, C ++, C #, D, Objective-C), Anda bahkan dapat memproses beberapa bagian aplikasi dalam C mentah sambil mempertahankan Java untuk tugas lain.

gert
sumber
2

Saya mungkin menyertakan OS pilihan Anda sebagai kriteria keputusan. Ini akan memudahkan dukungan jika Anda menggunakan vendor yang sama untuk OS dan server aplikasi. Jika Anda sudah memiliki hubungan dengan salah satu atau kedua vendor, pertimbangkan apakah mereka baik-baik saja.

Dari perspektif teknis saya akan memilih GlassFish karena memiliki dukungan untuk inovasi yang lebih baru. Saya tidak berpikir JBoss buruk dalam hal itu hanya tidak up-to-date.

Sebagian besar pengalaman saya ada di WebLogic tetapi saya telah menggunakan JBoss dan GlassFish. Saya baru saja merilis situs baru di tumpukan sumber terbuka Sun lengkap (OpenSolaris, GlassFish, MySQL) dan itu adalah pengalaman hebat dengan hanya sedikit rasa frustrasi.

Ed.T
sumber
OS sebenarnya bukan masalah, kecuali Anda memiliki dependensi biner yang sangat spesifik (yang seharusnya tidak menjadi masalah untuk sebagian besar proyek java). Kami mengembangkan di windows, 32 dan 64 bit, dan menyebarkan di Glassfish di Solaris. Sebagian besar pengembang tidak terlalu tahu dan tidak perlu peduli. Pengguna tidak melihatnya (sebagian besar perkembangan kami adalah aplikasi web).
ymajoros
2

Saya masih berpikir bahwa WebLogic adalah server aplikasi Java EE terbaik di pasaran. Saya pikir itu sepadan jika Anda mampu membayar biaya lisensi tersebut.

Saya terkejut melihat seberapa jauh Anda dapat melangkah dengan menggabungkan Tomcat, OpenEJB, dan ActiveMQ. Bagi saya itu adalah alternatif berbiaya rendah.

Saya juga akan melihat ke Spring dm Server. Ini didasarkan pada Tomcat, tetapi saya pikir bagian OSGi yang mereka tambahkan bisa ada di mana-mana dalam waktu singkat. Jika dilakukan dengan kualitas yang sama dengan kerangka Spring, itu akan sangat bagus.

duffymo
sumber
2
Masalah yang saya miliki dengan WebLogic adalah vendor terkunci, itu adalah pil yang buruk untuk ditelan ketika Anda benar-benar tidak perlu!
Manius
1
Itu benar untuk semua vendor Java EE yang saya tahu, bukan hanya WebLogic. Jika Anda menggunakan fitur khusus vendor yang Anda terkunci. Kadang-kadang harus menulis kode.
duffymo
3
WebLogic hanya untuk komersial - itulah yang saya dapatkan - begitu Anda menulis cek besar, Anda "terkunci" ke tingkat yang lebih besar daripada Anda dengan alternatif sumber terbuka. Jelas jika Anda peduli dengan kemandirian platform, Anda tidak akan menggunakan fitur khusus vendor, jadi bukan itu yang saya maksud. Sebenarnya sebuah survei yang saya baca pernah mengatakan bahwa para pengembang percaya bahwa penghindaran penguncian vendor adalah keuntungan # 1 dari open source (bukan biaya).
Manius
Benar-benar omong kosong? Apakah Anda yakin bahwa menandatangani kontrak jutaan dolar dengan vendor tidak mengunci Anda? Itu buktinya.
duffymo
@ymajoros Apakah maksud Anda "tidak boleh" meminta vendor mengunci? Terus terang, saya tidak mengerti komentar Anda.
Patrick M
1

Alternatif: tidak menggunakan appserver sama sekali.

Periksa http://www.atomikos.com/Publications/J2eeWithoutApplicationServer .

Untuk proyek web, pertahankan wadah web yang ringan jika perlu, dikombinasikan dengan sesuatu seperti Wicket untuk menghindari kerumitan JSP / JSF atau penyangga.

HTH Guy

Guy Pardon
sumber
Jika Anda tidak ingin belajar menggunakan alat, jangan gunakan apa pun. Atau mencoba menjadi profesional yang terampil dan berinvestasi di lingkungan Anda, Anda akan diberi imbalan. Harus mengakui saya melakukan itu untuk beberapa proyek. Proyek yang sama tidak berevolusi dari server aplikasi, menjadi server klien khusus di Spring, ke Java EE dan Glassfish murni. Tidak akan pernah ingin kembali, solusi pertama sebenarnya terlalu rumit, sesederhana mungkin saat ini (dan standar, akan diterapkan pada server aplikasi Java EE tanpa banyak perubahan).
ymajoros
jawaban yang baik, cara yang buruk untuk mendapatkan dokumen
msangel