JavaRush /Blog Java /Random-MS /Coffee break #157. Menggunakan Java untuk aplikasi web ba...

Coffee break #157. Menggunakan Java untuk aplikasi web bahagian hadapan pada tahun 2022

Diterbitkan dalam kumpulan
Sumber: Nocodefunctions Kami membawa kepada perhatian anda artikel tentang pengalaman membangunkan aplikasi web bebas menggunakan Java. Coffee break #157.  Menggunakan Java untuk aplikasi web bahagian hadapan pada 2022 - 1

Java untuk bahagian hadapan - adakah ia benar-benar mungkin?

Ramai orang percaya bahawa menggunakan Java untuk pembangunan bahagian hadapan adalah mustahil: lagipun, Java direka untuk bahagian belakang. Ya, lama dahulu, applet Java dan Java Webstart membenarkan anda menjalankan aplikasi Java daripada penyemak imbas. Tetapi ini adalah sejarah purba, setua pemalam Flash. Tetapi walaupun tanpa applet, terdapat cara untuk menggunakan Java untuk bahagian hadapan - ini adalah JSP (Java Server Pages), yang banyak pelajar sekolah belajar dalam pelajaran sains komputer. Walau bagaimanapun, walaupun JSP masih dibincangkan dalam beberapa buku Java, teknologi itu telah ditamatkan sejak 2010-an. Adakah ia benar-benar satu lagi jalan buntu? Terdapat juga rangka kerja yang membenarkan pembangun Java untuk "transpile" (mengubah dalam cara yang kompleks) kod mereka ke dalam JavaScript menggunakan Google Web Toolkit (GWT, ia bukan super baru sama ada ) atau melalui J2Cl (juga daripada Google). Adalah penting untuk ambil perhatian bahawa GWT dan J2Cl tidak sesuai untuk pemula, ia adalah lebih banyak alat perusahaan yang dibangunkan oleh Google untuk digunakan dalam projek besar.

Wira Java yang tidak didendang untuk bahagian hadapan: Jakarta Faces (JSF)

Java Server Faces (JSF), kini dikenali sebagai "Jakarta Faces," telah wujud sejak sekurang-kurangnya awal 2010-an. Saya sentiasa terkejut bahawa ia kurang diketahui dan jarang disebut kerana rangka kerja ini memudahkan untuk membangunkan aplikasi web dengan cepat, selamat dan boleh dipercayai. JSF mudah dipelajari dan memanfaatkan sepenuhnya ekosistem Java. Begini caranya, sebagai contoh, anda membuat halaman web dengan kandungan dinamik:
  • Buat halaman html (dengan sambungan .xhtml).
  • Tukar teg html <head> dan <body> kepada teg <h:head> dan <h:body>.
  • Sekarang, untuk memaparkan kandungan dinamik dengan memanggil beberapa harta di bahagian belakang, hanya letakkan kod ini selepas hashtag dan antara bar kawalan:

    #{backendscript.myText}
Kemudian buat fail Backendscript.java di bahagian belakang anda, tambahkan pembolehubah yang dipanggil String myText = "hai! selamat datang ke halaman saya!" . Ia akan dipaparkan pada halaman web. JSF adalah sangat mudah. Ia didokumentasikan dengan baik terima kasih kepada banyak soalan mengenai Stackoverflow , dokumentasi rasmi , beberapa buku ( pautan ini , dan saya juga suka buku David Heffelfinger ) dan sudah tentu video Youtube .

Adakah JSF rumit? Apakah kelebihannya?

JSF tidak rumit sama sekali. Selain itu:
  1. Ia disepadukan dengan baik dengan IDE Java klasik (NetBeans, IntelliJ IDEA dan Eclipse). Setiap IDE menyediakan:
    • Projek templat yang mengisi templat untuk konfigurasi Maven (yang sebenarnya, sangat mudah).
    • Alat penyahpepijatan (dengan muat semula panas, sekurang-kurangnya untuk NetBeans).
    • Alat autolengkap, pemfaktoran semula, navigasi dan ralat yang berkuasa untuk ekosistem Java. IDE boleh memberikan maklumat berguna tentang mana-mana kelas yang anda sebutkan dalam halaman html (seperti #{backendscript.myText} yang dinyatakan di atas). Halaman HTML sebenarnya akan disepadukan dengan pangkalan kod anda yang lain!
  2. Ia mengendalikan variasi kod kompleks pada halaman html dengan sangat mudah.
    • Adakah anda perlu memuat semula sebahagian halaman dengan klik butang mudah? Tambahkan sifat kemas kini pada butang anda, diikuti dengan ID komponen yang ingin anda kemas kini.
    • Mengenai pengemaskinian dan kandungan dinamik: Saya sangat menyukai kesederhanaan JSF: bahagian hadapan mengemas kini bahagian belakang, mengemas kini dirinya sendiri atau bahagian belakang mengemas kini bahagian hadapan. Semua ini adalah keperluan asas aplikasi web dan ia ada di sini.
    • Jika anda mahu pengguna boleh memuat turun fail atau beberapa fail dengan syarat untuk jenis dan saiz fail, cuma tambah satu baris pada kod dengan parameter yang jelas .
    • Perlu membuat tapak web dalam pelbagai bahasa? Tambahkan teg <f:view> pada html anda dan dapatkan bahasa pengguna dengan hanya satu baris di bahagian belakang.
  3. Anda boleh menambah dan mencampurkan tag HTML, skrip JS dan CSS, dan semuanya dioptimumkan SEO.
Anda mempunyai kawalan penuh ke atas html yang dihasilkan oleh JSF dan anda sentiasa boleh menambah kod html dan js. Ini memudahkan untuk bekerjasama dengan pereka bentuk dan pembangun bahagian hadapan yang tidak mengetahui atau mengambil berat tentang JSF. Semasa saya bekerja dengan CSS, saya mendapat bantuan pereka bentuk yang boleh bekerja dengan halaman HTML yang saya buat menggunakan JSF, membuat perubahan yang diperlukan tanpa sebarang kesulitan. JSF menjana kod HTML yang boleh anda lihat dan baca dalam penyemak imbas anda. Ini sangat membantu untuk menyahpepijat dengan alat pembangunan biasa dan mengesahkan bahawa tindakan SEO anda dilaksanakan dengan betul.

Primefaces: Senarai besar komponen dan tema JSF percuma

JSF datang dengan senarai panjang komponen sedia untuk digunakan yang mencipta bahagian klasik halaman html, jadi anda tidak perlu melakukannya sendiri. Contohnya, gunakan teg <h:dataTable> untuk membuat jadual yang memaparkan data khusus yang dimuatkan dari bahagian belakang anda—tanpa perlu mencipta semula dari awal. Dan terdapat pilihan yang lebih baik: Prime Tek telah membangunkan set sumber terbuka komponen yang dipanggil Primefaces . Mereka datang dengan ciri tambahan dan mempunyai beberapa kelebihan. Sebagai contoh, bukannya <h:dataTable>, hanya gunakan teg Primefaces <p:dataTable>. Ini mencipta jadual data asas yang mana anda boleh menambah suis lajur , lajur dinamik atau mengedit fungsi dengan mudah dalam jadual.

Tetapi Java lambat dan berat?

1. Adakah Java lambat?

Tidak. Perkara yang lucu ialah rangka kerja JS seperti React, Angular dan Vue telah dicipta dengan janji menjadi lebih pantas dan lebih pintar daripada JSF di Jawa, kerana mereka segera menghantar semua logik aplikasi ke penyemak imbas pelawat tapak. JSF berfungsi secara berbeza: apabila pengguna memanggil halaman (cth https://nocodefunctions.com), aplikasi di bahagian belakang menjana html untuk halaman itu sahaja dan menghantarnya kembali. Ini dipanggil "penyediaan sisi pelayan" (SSR). Dalam amalan, aplikasi satu halaman boleh memerlukan masa yang sangat lama untuk pengguna mendapatkan dan memuatkan fail javascript yang membentuk keseluruhan aplikasi. Ini boleh membawa kepada pengalaman pengguna yang lemah (terpaksa menunggu halaman pertama dimuatkan) dan isu SEO. Hasilnya, pemaparan bahagian pelayan gaya Java telah mendapat semula populariti kerana ia dianggap lebih unggul daripada pemaparan bahagian pelanggan dari segi kelajuan dan prestasi. Rangka kerja SSR baharu sedang muncul yang memerlukan pembangun terbiasa dengan pemaparan sisi klien untuk mengendalikan dan mencampurkan dua logik berbeza ini.

2. Adakah Java sukar?

Tidak. Perkara yang anda perlukan untuk menggunakan aplikasi JSF:
  • Aplikasi itu sendiri. Aplikasi "hello world" JSF yang mudah mungkin berukuran 10KB atau kurang.
  • Pilihan adalah Primefaces (dibincangkan di atas) jika anda memerlukan komponen berkualiti tinggi. Ini adalah tambahan 4.5 MB .
Sekarang jalankan semuanya pada pelayan. Untuk melakukan ini anda perlukan:
  1. Mempunyai pelayan di awan atau di tempat lain. Untuk versi ujian Nocodefunctions (https://test.nocodefunctions.com) saya menggunakan Hetzner, di mana saya menyewa pelayan logam kosong dengan 2 GB RAM untuk 4.15 euro sebulan. Saya boleh menggunakan kurang RAM, tetapi aplikasi saya menyediakan beberapa perkhidmatan intensif data dan ia perlu dimuatkan dalam ingatan. Versi sebenar (bukan ujian) fungsi nocode berjalan pada pelayan yang lebih besar (juga dengan Hetzner) untuk menyokong lebih banyak tugas intensif data pengguna secara selari - kurang daripada €50 sebulan.

  2. Anda mesti memasang Java. Ini ialah muat turun fail tunggal di bawah 200 MB untuk Mac, Win atau Linux, percuma sepenuhnya walaupun untuk kegunaan komersial.

  3. Anda perlu mempunyai pelayan web Java untuk menjalankannya. Ramai daripada mereka. Secara peribadi, saya menggunakan Payara Micro (Edisi Komuniti), yang percuma dan muat turun fail 77MB tunggal.

  4. Lancarkan aplikasi anda.

Kesimpulan: Fikirkan Java!

Saya rasa seperti beberapa pengaturcara berfikir bahawa Python, Ruby, PHP, NodeJS + React... adalah satu-satunya pilihan apabila memulakan aplikasi web yang kecil. Tetapi sekarang saya harap mereka juga akan mempertimbangkan Java + JSF untuk projek seterusnya.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION