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.
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)
sumber
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.
sumber
Saya telah menggunakan jBoss selama 3-4 tahun.
Argumen untuk jBoss:
Argumen melawan jBoss:
sumber
Lihat GlassFish 3.1! Dibangun di atas kernel GlassFish v3 modular berbasis Java EE 6, versi 3.1 memberikan pengelompokan, administrasi terpusat, dan ketersediaan tinggi.
Lihat http://blogs.oracle.com/nazrul/entry/glassfish_3_1 untuk detail selengkapnya.
sumber
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:
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.
sumber
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.
sumber
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.
sumber
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
sumber