Status middleware aplikasi Java, Bagian 1

Klien / server mati. Itulah desas-desus sekarang karena teknologi berbasis Internet yang lebih baru berkembang pesat. Tetapi teknologi baru tersebut hanyalah evolusi alami dari pendekatan sebelumnya, diimplementasikan dengan protokol yang lebih baru dan lebih terbuka dan dirancang untuk memberikan skalabilitas, pengelolaan, dan keragaman yang lebih besar.

Besarnya evolusi ini sangat mencengangkan. Sebagian besar klien / vendor server utama telah memodernisasi produk mereka dan sekarang mengarahkan dana pemasaran mereka ke dalam teknologi tiga tingkat. Dalam banyak kasus, produk yang lebih baru adalah Java-centric dan Internet-protocol centric. Misalnya, saya mengidentifikasi setidaknya 46 produk middleware Java pada hitungan terakhir. Dua tahun lalu akan sulit untuk mendapatkan setengah dari angka itu.

Ini adalah bagian pertama dari artikel berseri dua bagian yang didedikasikan untuk menjelaskan middleware Java serbaguna dalam bentuknya saat ini. Dalam artikel pertama ini, saya akan memeriksa fitur-fitur produk saat ini dan menjelaskan mengapa fitur-fitur ini penting. Di bagian kedua, Anil Hemrajani akan memeriksa Enterprise JavaBeans (EJB) dan menunjukkan bagaimana generasi produk middleware Java saat ini berhubungan dan mendukung standar komponen penting ini.

Latar Belakang

Pertama-tama, mari kita definisikan middleware Java.Istilah ini mencakup server aplikasi seperti BEA WebLogic, produk perpesanan seperti ActiveWorks Active Software dan SpiritWAVE Push Technologies, dan produk hybrid yang dibangun di atas warisan DBMS dan menambahkan fitur eksekusi objek Java berbasis server. Saya bisa saja berfokus pada segmen yang lebih sempit, seperti server aplikasi, tetapi itu tidak adil untuk banyak produk yang tidak sesuai dengan kategori ini secara tepat tetapi harus dipertimbangkan untuk aplikasi multitier. Lebih lanjut, bahkan di antara server aplikasi terdapat spektrum yang cukup, termasuk yang terutama merupakan server servlet serta yang berbasis ORB atau berbasis OODB. Menarik garis antara semua produk ini terbukti semakin sulit. Namun, fitur pemersatuadalah bahwa mereka semua berusaha untuk memecahkan masalah penyebaran aplikasi multitier dengan menggunakan teknologi Java dan Internet.

Kasus bisnis untuk menggunakan Java di middleware sangat menarik; Di antara keunggulan yang ditawarkan oleh middleware Java adalah sebagai berikut:

  • Kemampuan Internet untuk menghubungkan kantor dan organisasi secara ekonomis

  • Perlunya organisasi bekerja sama dengan berbagi data dan proses bisnis

  • Keinginan untuk mengkonsolidasikan layanan generik dan pengelolaan layanan ini

  • Keinginan untuk menyediakan manajemen aplikasi terpusat, termasuk startup, shutdown, maintenance, recovery, load balancing, dan monitoring

  • Keinginan untuk menggunakan layanan dan protokol terbuka

  • Keinginan untuk menerapkan kembali logika bisnis sesuka hati dan tidak dibatasi oleh infrastruktur; Hal ini memerlukan penggunaan API dan protokol terbuka, yang didukung secara luas di sebagian besar produk infrastruktur

  • Kebutuhan untuk mendukung aplikasi arsitektur campuran yang bekerja sama

  • Keinginan untuk memindahkan keputusan jaringan dan infrastruktur layanan keluar dari ruang aplikasi, sehingga manajer sistem dapat membuat keputusan infrastruktur tanpa terhalang oleh aplikasi yang bergantung pada protokol atau fitur kepemilikan

  • Keinginan untuk mengurangi keragaman dan tingkat keterampilan staf pemrogram yang dibutuhkan dan meminimalkan kebutuhan akan keahlian pembuatan alat tingkat lanjut dalam proyek

  • Keinginan untuk memanfaatkan keahlian berorientasi objek dengan memperluasnya ke ranah server - karenanya produk server berorientasi objek yang lebih baru dan jembatan objek-ke-relasional

Tujuan middleware adalah untuk memusatkan infrastruktur perangkat lunak dan penerapannya. Klien / server berasal dari era integrasi dalam satu departemen. Organisasi sekarang biasanya mencoba integrasi melintasi batas departemen - bahkan dari satu organisasi ke organisasi lain. Internet - yang memikat bisnis dengan kemampuannya untuk berfungsi sebagai jaringan global yang memungkinkan departemen dan mitra saling terhubung secara efisien dan cepat - telah menghasilkan permintaan untuk integrasi ini.

Java menyediakan bahasa pergaulan untuk menghubungkan data dan aplikasi dengan mudah melintasi batas-batas organisasi: Dalam lingkungan global terdistribusi, di mana Anda tidak memiliki kendali atas pilihan teknologi apa yang mungkin dibuat oleh mitra Anda, perusahaan pintar memilih standar terbuka dan platform-netral. Perusahaan tidak dapat mengantisipasi siapa yang akan menjadi pelanggan, mitra, atau anak perusahaan mereka dua tahun ke depan, jadi tidak selalu mungkin untuk merencanakan infrastruktur bersama dengan mitra seseorang. Dalam situasi yang tidak pasti ini, keputusan terbaik mungkin menggunakan teknologi yang paling universal dan mudah beradaptasi.

Java memungkinkan Anda mengurangi jumlah bahasa pemrograman dan platform yang harus dipahami oleh staf Anda. Mengapa? Karena Java sekarang digunakan dalam konteks yang beragam seperti browser Internet, prosedur yang tersimpan dalam database, objek bisnis dalam produk middleware, dan aplikasi sisi klien.

Namun, pada usia tiga tahun, teknologi Java masih belum matang, dan ini berlaku untuk produk yang dibahas dalam artikel ini. Di sisi lain, kita sekarang mungkin berada di era ketika produk tidak pernah benar-benar mencapai kematangan, karena teknologi yang mendasari produk tersebut berubah dengan sangat cepat. Faktanya, saya telah menemukan masalah yang signifikan dengan hampir setiap produk middleware yang saya gunakan, termasuk produk yang dianggap matang yang telah ada di pasar selama beberapa tahun dan baru-baru ini keluar dengan fitur-fitur baru yang signifikan. Intinya, pada saat vendor berhasil memperbaiki masalah, fitur-fitur baru telah ditambahkan. Siklus untuk menambahkan fitur baru sekarang jauh lebih singkat daripada sebelumnya, sehingga produk tidak memiliki cukup waktu untuk menjadi stabil sebelum menyertakan rangkaian fitur utama berikutnya.Ini mungkin sesuatu yang harus kita biasakan, dan mempelajari kekuatan dan kelemahan produk yang kita pilih adalah bagian penting dari desain aplikasi dan siklus prototipe.

Sasaran untuk middleware

Standar komponen middleware EJB dikembangkan dengan tujuan berikut:

  • Untuk memberikan interoperabilitas komponen. Kacang perusahaan yang dikembangkan dengan alat berbeda akan bekerja sama. Selain itu, kacang yang dikembangkan dengan alat berbeda akan berjalan di lingkungan EJB mana pun.

  • Untuk menyediakan model pemrograman yang mudah digunakan sambil mempertahankan akses ke API tingkat rendah.

  • Untuk mengatasi masalah siklus proses, termasuk pengembangan, penerapan, dan waktu proses.

  • Untuk menyediakan kompatibilitas dengan platform yang ada, yang memungkinkan produk yang sudah ada diperluas untuk memberikan dukungan bagi EJB.

  • Untuk menjaga kompatibilitas dengan Java API lainnya.

  • Untuk menyediakan interoperabilitas antara aplikasi EJB dan non-Java.

  • Agar kompatibel dengan CORBA.

Oleh karena itu, fokus dari standar EJB adalah pada pembuatan standar interoperabilitas untuk middleware Java, melindungi pemrogram dari keharusan menangani banyak masalah sulit yang muncul saat mengembangkan aplikasi terdistribusi. Hal ini memungkinkan pengembang perangkat lunak untuk berkonsentrasi pada logika bisnis alih-alih menulis infrastruktur dan alat buatan sendiri yang canggih. Akibatnya, bisnis dapat menggunakan sebagian besar sumber daya pendidikan mereka untuk melatih staf dalam proses bisnis, yang biasanya memberikan hasil terbesar.

Untuk daftar di atas, saya menambahkan tujuan tambahan berikut untuk middleware Java kelas enterprise. Fitur produk ini diperlukan dalam jangka panjang agar berhasil menjalankan dan memelihara lingkungan berbasis middleware:

  • Ini harus mengakomodasi interkoneksi beberapa unit bisnis, perusahaan, dan pelanggan dalam infrastruktur terdistribusi tanpa mengorbankan keamanan atau menimbulkan kekacauan

  • Ini harus memungkinkan mekanisme kontrol akses yang fleksibel namun andal untuk memastikan bahwa data mitra bisnis diakses hanya dengan cara yang dimaksudkan, dan hanya oleh pihak yang dituju.

  • Ini harus memungkinkan administrator sistem untuk mengelola lingkungan komputasi terdistribusi yang berisi sejumlah besar komponen logika bisnis dengan cara yang seragam, tanpa harus memahami atau menerapkan prosedur unik ke komponen tertentu.

  • itu harus memungkinkan administrator sistem untuk membuat pilihan komponen infrastruktur tanpa mempengaruhi aplikasi, dan untuk menyesuaikan dan menskalakan komponen tersebut dan memiliki cara yang seragam dan umum untuk mengukur kinerja dan kebutuhan sumber daya dari semua aplikasi

  • Ini harus memungkinkan komponen bisnis untuk dipindahkan antara klien dan server tanpa mempengaruhi arsitektur keduanya

  • Ini harus menyediakan mekanisme keamanan yang memungkinkan pengguna tertentu untuk menambahkan komponen baru, tanpa harus memberikan administrator server akses ke semua komponen dan sumber data (ini adalah peluang besar untuk kemampuan nilai tambah, karena sangat penting untuk aplikasi ekstranet dan kemitraan )

Komponen dan fitur platform middleware Java

Kategori middleware Java yang tumbuh paling cepat saat ini mungkin adalah server aplikasi. Namun, penting untuk menyadari berbagai macam server aplikasi (dan jenis produk middleware lainnya) yang ada. Perbedaan di antara kategori produk middleware Java saat ini tidak diwakili oleh garis tetapi oleh kontinum middleware yang luas. Sekarang saya akan membahas fitur-fitur middleware Java, berdasarkan perbandingan pekerjaan saya sendiri, yang mencakup setiap kelas produk middleware Java yang saya ketahui.

Objek, komponen, dan model wadah

Komponen aplikasi harus mematuhi beberapa model penerapan runtime, yang menentukan bagaimana komponen berkomunikasi dengan lingkungannya; (mungkin) bagaimana itu diinstal, dimulai, dihentikan, dan dipanggil; dan cara mengakses layanan yang penting bagi lingkungannya. Model runtime dan container komponen server yang berpusat pada Java yang populer mencakup RMI, EJB, CORBA, DCOM, servlet, JSP (Java Server Pages), dan prosedur tersimpan Java. Selain itu, model komponen dapat diekspresikan dalam berbagai bahasa dasar, termasuk Java, IDL, C ++, dan banyak lainnya.

Ada tumpang tindih dengan berbagai model komponen. Misalnya, RMI adalah model komponen sepele dengan fasilitas yang sangat dasar untuk aktivasi dan lokasi objek, dan terutama merupakan standar pemanggilan jarak jauh, sedangkan EJB memanfaatkan RMI dan menetapkan RMI sebagai model pemanggilan objek utamanya. EJB juga mendukung CORBA. Nyatanya, tidak ada model yang eksklusif, dan banyak server aplikasi Java mendukung sebagian besar atau semua model di atas.

Banyak server middleware Java menjalankan beberapa instance objek bisnis (yang sekarang disebut oleh dunia CORBA sebagai servant) dalam satu mesin virtual Java (JVM). Keamanan jenis bahasa Java memungkinkan proses JVM tunggal untuk melayani permintaan dari beberapa klien dan menggunakan struktur data program dan pemuat kelas untuk menjaga data klien tetap terpisah. Selama servant tidak menggunakan metode aslinya sendiri, tidak mungkin satu servant menurunkan servant jika crash (kecuali jika menemukan bug di JVM itu sendiri), atau mengakses data yang bersifat privat ke kelas lain . Server objek yang dirancang dengan tepat akan melindungi objek pribadinya dan mencegah objek yang salah mengakses apa yang dimiliki objek lain.

Namun, data yang dideklarasikan statis dalam kelas Java dapat dibagikan di antara klien dalam JVM yang sama jika klien menggunakan loader kelas yang sama, jadi aturan perlu ditentukan untuk menentukan kapan JVM terpisah (atau yang setara dengan JVM terpisah menggunakan memori- teknik partisi) atau pemuat kelas terpisah diperlukan untuk memberi klien ruang data statisnya sendiri. Aturan seperti itu telah ditentukan untuk applet, tetapi tidak untuk lingkungan eksekusi lainnya. Java Web Server Sun menggunakan JVM tunggal untuk semua servlet dan ruang nama kelas terpisah untuk servlet dengan basis kode berbeda. EJB menghindari masalah ini dengan melarang data statis nonfinal.

Kinerja dapat ditingkatkan jika objek tidak aktif atau pasif saat tidak digunakan, membebaskan sumber daya seperti koneksi database. Karena alasan ini, banyak server yang pasif dan mengaktifkan kembali objek sebagaimana mestinya. Demikian pula, beberapa produk menyimpan objek yang sering dibuat dalam kumpulan atau cache dalam keadaan diinisialisasi dan siap untuk segera digunakan. Penampung objek harus mengelola passivasi dan reaktivasi serta sumber daya yang dikumpulkan yang dipengaruhi oleh passivasi.

Kompatibilitas EJB (versi)

Model EJB sudah didukung secara universal. Hampir setiap vendor middleware telah berjanji untuk mendukungnya dan banyak yang sudah melakukannya. Selain itu, Object Management Group (OMG) telah memasukkan pemetaan ke EJB sebagai bagian dari Spesifikasi Komponen CORBA yang diusulkan . Sulit untuk membayangkan bahwa bahkan Microsoft, satu-satunya yang bertahan dan teguh, pada akhirnya tidak akan menyerah dan menyediakan wadah EJB untuk DCOM.

Meskipun middleware yang kompatibel dengan EJB berbeda dapat menyebarkan dan mengoperasikan komponen aplikasi yang sama (selama komponen tersebut hanya menggunakan fitur EJB standar yang diperlukan), masih ada banyak variasi di antara server yang mendukung EJB. Untuk satu hal, spesifikasi EJB itu sendiri sedang berkembang. Oleh karena itu, pertanyaan penting saat mengevaluasi produk middleware Java adalah: Apakah server mendukung versi terbaru EJB, atau apakah hanya mendukung versi sebelumnya? Pertanyaan kunci lainnya adalah: Apakah produk EJB-sentris, atau apakah dukungan EJB hanya disertakan dalam fitur nilai tambah produk (dan dengan demikian tidak tersedia saat layanan atau API EJB digunakan)? Dan terakhir: Fitur EJB opsional apa yang disertakan (misalnya, kacang entitas dan persistensi yang dikelola container)?