Bagaimana kami bermigrasi dari Oracle JDK dan Java Web Mulai ke AdoptOpenJDK dan OpenWebStart



Selamat siang.

Pada artikel ini, saya akan berbicara tentang "modernisasi" di perusahaan tempat saya bekerja dengan alat seperti Java Web Start, atau lebih tepatnya, tentang menggantinya dengan solusi open source alternatif.

Tentang diriku


Nama saya Ildar dan saya bekerja untuk perusahaan Jerman yang, seperti banyak perusahaan Jerman, menggunakan tumpukan teknologi lama dan mencoba bermigrasi ke tumpukan yang lebih baru.

Masalah


Saya akan mulai dengan deskripsi masalahnya. Perusahaan kami memiliki bagian terpenting dari sistem, yaitu aplikasi lawas yang ditulis dalam java 6 dan sebagian di java 8. Diluncurkan di java 8. Untuk menggunakan aplikasi ini untuk produksi, pengguna mengunduh file jnlp dari situs dan menjalankannya di rumah mereka di komputer.

Jadi perusahaan itu dengan senang hati ada untuk waktu yang lama , sampai Oracle mengumumkan bahwa mereka telah berhenti mendukung versi 8 java, menandai teknologi Java Web Start sebagai usang, dan memutuskan untuk menghentikannya dimulai dengan java 11. Itu berarti masih ada lebih banyak aplikasi JWS, di mana masih banyak tidak akan menerima termasuk pembaruan keamanan. Tentu saja, sedikit yang bisa menerima kenyataan ini. Juga para penggemar pemikiran dari Karakun memutuskan untuk menulis pengganti mereka untuk JWS.

Di perusahaan kami, beberapa waktu lalu, mereka mulai menulis ulang aplikasi menggunakan boot Spring untuk backend dan Bereaksi untuk frontend, tetapi prosesnya tidak cepat, dan tidak ada pembaruan sekarang.

Cari solusinya


Jadi tim pengembangan menghadapi pertanyaan untuk menemukan solusi alternatif. Secara umum, perlu diakui bahwa ada lebih dari satu solusi untuk masalah ini. Awalnya, arsitek memilih dua solusi GetDown dan OpenWebStart yang sama . Pada saat keputusan awal, pilihan jatuh pada opsi pertama, karena OpenWebStart bahkan tidak dirilis di bawah versi pertama (hanya ada beberapa pengembangan dan rencana).

Masing-masing solusi memiliki pro dan kontra, tetapi perusahaan memutuskan untuk tidak menunggu rilis OpenWebStart dan mulai menerapkan bukti konsep berdasarkan GetDown.

Setelah menghabiskan beberapa minggu, salah satu pengembang mengatasi tugas tersebut dan kami menyadari bahwa, pada prinsipnya, kami dapat menerapkan solusi lengkap yang memenuhi persyaratan kami dengan menghabiskan sedikit waktu lagi.

Sementara itu, tugas-tugas mendesak lainnya tiba dan tim pengembangan mengalihkan perhatian dari transisi dari tahap PoC ke implementasi penuh penggantian Java Web Start.

Tenggat waktu


Semua orang hidup bahagia sampai manajemen menyadari bahwa sudah waktunya untuk mengakhiri dan dengan penggantian Java Web Start. Sampai saat ini, saya tidak terlibat dalam proyek ini, tetapi di sini mereka juga menghubungkan saya.
Pertama, saya memutuskan untuk mencari informasi tentang solusi untuk masalah kita lagi. Jadi katakanlah masuk ke solusi dari awal. Jadi, saya menemukan keberadaan OpenWebStart. Saya mengujinya secara lokal, mengalami beberapa masalah (kemudian kami juga mengalami masalah lain) dan menyelesaikannya. Hasilnya, semua orang menyukai solusinya. Tak perlu dikatakan, manajemen terutama menyukainya karena tidak harus menghabiskan waktu untuk pengembangan, seperti halnya dengan GetDown. Tetapi pada akhirnya, kami menghabiskan waktu agar sistem kami bekerja dengan OpenWebStart.

Info Cepat Tentang OpenWebStart


OpenWebStart didasarkan pada implementasi lain dari Java Web Start - IcedTea-Web dan spesifikasi JNLP JSR-56 . Pada saat penulisan, proyek ada dalam versi 1.1.4 dan berencana untuk mengimplementasikan fitur-fitur utama Java Web Start (kemajuan dapat diamati di sini ).
Saya tidak melihat titik daftar semua pengaturan yang mungkin, itu bisa memakan waktu yang sangat lama.

Berikut ini beberapa di antaranya:

  • manajemen cache (ukuran, lokasi ...),
  • pengaturan keamanan (memungkinkan pengguna untuk menjalankan aplikasi yang tidak ditandatangani oleh sertifikat, baik menampilkan popup peringatan atau tidak ...),
  • tambahkan alamat server ke daftar putih,
  • pengaturan debug jarak jauh,
  • manajemen sertifikat keamanan
  • Kontrol versi JRE / JDK,
  • lain

Fitur menggunakan OpenWebStart dan masalah yang kami temui


Instal OpenWebStart


Menginstal OpenWebStart cukup sederhana. Cukup mengunduh file instalasi untuk platform Anda di situs web dan ikuti instruksi penginstal.

Tapi ini nasib buruk. Dalam kasus kami, pengguna adalah sekitar 10.000 pelanggan, yang masing-masing layanan dukungan perusahaan kami harus menginstal alat ini. Solusinya ditemukan cukup cepat: instalasi latar belakang yang disebut tersedia.

Anda perlu mengunggah file instalasi ke masing-masing komputer dan menjalankan perintah khusus (dan untuk ini perusahaan sudah memiliki alat):

OpenWebStart_windows_Setup.exe -q -varfile response.varfile

, di mana response.varfile adalah file dengan beberapa pengaturan yang dapat diatur sebelumnya oleh penginstal. Misalnya, folder tempat menginstal OpenWebStart, dan beberapa lainnya.

Kami mengatasi masalah ini. Lebih lanjut, semua klien perlu menginstal AdoptOpenJDK versi tertentu dan menautkannya dengan OpenWebStart, yang mudah dilakukan melalui antarmuka pengguna, tetapi ini bukan kasus kami.



Kami menemukan dalam pengaturan bahwa Anda dapat menentukan URL dari mana OpenWebStart akan mengambil file pengaturan, di mana Anda dapat menentukan URL ke JRE yang kami butuhkan. Dan URL itu sendiri dengan file pengaturan dapat ditentukan dalam response.varfile yang disebutkan di atas (begitulah rumitnya).

File pengaturan JSON itu sendiri dengan versi JRE yang berbeda adalah sebagai berikut .

Dalam pengaturan, Anda juga dapat menentukan versi dan vendor JRE, jika beberapa JRE ditentukan dalam file JSON. Kami hanya mengindikasikan satu dan mengunggah file JSON dan mengarsipkan dengan JRE yang kami butuhkan di Amazon S3 bucket.

Setelah pengujian, kami menemukan bahwa dengan versi JRE yang kami unduh, aplikasi tidak memulai ... Ternyata Java kami memiliki struktur yang sedikit berbeda dalam arsip. Kami membuat skrip batch yang membangun kembali struktur arsip JRE.

"Yah, sekarang semuanya akan baik-baik saja," pikir kami.

Ketika Anda pertama kali memulai aplikasi, JRE dimuat secara otomatis, yang digunakan di masa depan. Tapi, kami menunggu kejutan berikutnya.

Nasib sial tidak pernah datang sendiri


Tetapi seperti biasanya, kami tidak terbatas pada satu masalah.

Aplikasi kita, katakanlah, memiliki satu fitur. Sebenarnya ada dua. Satu aplikasi (satu file jnlp) memulai aplikasi kedua (jnlp kedua). Dan dalam hal ini, aplikasi kedua tidak dimulai. Dalam log, Anda bisa melihat bahwa aplikasi macet di jalan buntu. Dari jejak siluman, menjadi jelas bahwa alasannya adalah mekanisme logging internal OpenWebStart.

Masalahnya dipecahkan dengan menonaktifkan pencatatan internal OpenWebStart. Log aplikasi kami secara alami tetap aktif.



Pengaturan ini juga dimatikan dalam file response.varfile, yang digunakan selama instalasi latar belakang.

Dan sekarang, setelah mengatasi ini dan beberapa kendala lainnya (saya tidak harus menyebutkan semua orang), kami berhasil meluncurkan aplikasi kami, yang saat ini sedang menjalani pengujian sebelum dirilis ke prod. Saat kami menguji, versi OpenWebStart ditingkatkan dari 1.1.1 ke 1.1.4. Dari perubahan penting ditambahkan kemampuan untuk debut jarak jauh.



Mungkin artikel saya akan bermanfaat bagi seseorang dalam pekerjaan yang sulit seperti dukungan untuk aplikasi lama. Jika Anda memiliki pertanyaan - tanyakan, saya akan mencoba menjawab.

PS semua gambar diambil dari situs web resmi OpenWebStart .

Source: https://habr.com/ru/post/undefined/


All Articles