Node.js vs. Java: Pertempuran epik untuk mindshare pemaju

Dalam sejarah pengkomputeran, 1995 adalah masa yang menggila. Java pertama muncul, kemudian di tumitnya muncul JavaScript. Nama-nama itu membuat mereka kelihatan seperti kembar siam yang baru terlepas, tetapi mereka tidak mungkin lebih berbeza. Salah satunya disusun dan ditaip secara statik; yang lain ditafsirkan dan ditaip secara dinamik. Itu hanya permulaan perbezaan teknikal antara kedua-dua bahasa yang sangat berbeza yang telah beralih ke arah perlanggaran, terima kasih kepada Node.js.

Sekiranya anda cukup tua untuk berada di sekitar masa itu, anda mungkin akan mengingati puncak epik awal Jawa. Ia meninggalkan makmal, dan meter gembar-gemburnya disematkan. Semua orang melihatnya sebagai revolusi yang tidak akan berhenti daripada pengambilalihan komputer sepenuhnya. Ramalan itu akhirnya hanya sebahagian betul. Hari ini, Java menguasai telefon Android, pengkomputeran perusahaan, dan beberapa dunia tertanam seperti cakera Blu-ray.

Namun, untuk semua kejayaannya, Java tidak pernah mendapat banyak daya tarikan pada desktop atau penyemak imbas. Orang menyebut kekuatan applet dan alat berasaskan Java, tetapi gunk selalu menggunakan kombinasi ini. Pelayan menjadi tempat manis Java.

Sementara itu, pengaturcara apa yang pada awalnya keliru sebagai kembar bodoh telah menjadi miliknya sendiri. Sudah tentu, JavaScript ditandatangani selama beberapa tahun sebagai HTML dan web menarik Borg di dunia. Tetapi itu berubah dengan AJAX. Tiba-tiba, kembar bodoh itu mempunyai kekuatan.

Kemudian Node.js dilahirkan, memutar kepala pemaju dengan kepantasannya. Bukan hanya JavaScript lebih cepat di pelayan daripada yang diharapkan orang, tetapi sering lebih cepat daripada Java dan pilihan lain. Permintaannya yang tetap untuk permintaan data yang kecil, cepat dan tanpa henti telah menjadikan Node.js lebih umum, kerana laman web telah berkembang lebih dinamik.

Walaupun mungkin tidak dapat difikirkan 20 tahun yang lalu, si kembar kuasi kini terkunci dalam pertempuran untuk menguasai dunia pengaturcaraan. Di satu sisi terdapat asas-asas kejuruteraan dan seni bina yang kukuh. Di sisi lain adalah kesederhanaan dan keberadaan. Adakah dunia Java yang dikendalikan oleh penyusun sekolah lama akan bertahan, atau adakah kelajuan dan fleksibiliti Node.js akan membantu JavaScript untuk terus melancarkan segala yang ada di jalannya?

Di mana Java menang: Asas kokoh

Saya dapat mendengar para pemaju ketawa. Mungkin ada yang mati kerana kegagalan jantung. Ya, Java mempunyai gangguan dan bug, tetapi secara relatifnya, itu adalah Batu Gibraltar. Kepercayaan yang sama dalam Node.js bertahun-tahun. Sebenarnya, mungkin beberapa dekad sebelum kru JavaScript menulis hampir sama banyak ujian regresi seperti yang dikembangkan Sun / Oracle untuk menguji Java Virtual Machine. Apabila anda memulakan JVM, anda mendapat 20 tahun pengalaman dari kurator yang mantap yang bertekad untuk menguasai pelayan perusahaan. 

Dunia JavaScript semakin cepat. Apabila sebahagian besar laman web bergantung pada enjin pelaksanaan JavaScript, satu jam pengembang berjuta-juta akan menghabiskan semua aspek. Tetapi semua inovasi mempunyai kelemahan kerana ciri-ciri baru mungkin berkembang lebih cepat daripada asas pemaju yang dapat menyerapnya. Pembangun sekolah lama sering keliru dengan kod yang diisi dengan peningkatan sintaks ECMAScript yang lebih baru — dan kod baru yang sama ini secara senyap-senyap akan merosakkan beberapa penyemak imbas lama. Pembekalan praprosesor inovatif yang tidak berkesudahan seperti CoffeeScript dan JSX mungkin bagus untuk pembangun yang menginginkan ciri tersebut, tetapi mereka menyukarkan kita untuk membuka fail rawak dan memahaminya dengan segera.

Java mempunyai bahagian fitur dan pilihan baru, tetapi sebahagian besarnya adalah platform yang stabil. Itu menjadikan hidup lebih mudah bagi pemaju yang membina sesuatu untuk bertahan lama.

Di mana Node.js menang: Ketiadaan

Terima kasih kepada Node.js, JavaScript mencari rumah di pelayan dan penyemak imbas. Kod yang anda tulis untuk satu kemungkinan besar akan berjalan sama pada kedua-duanya. Tidak ada yang dijamin dalam hidup, tetapi ini sedekat yang dapat dicapai dalam perniagaan komputer. Jauh lebih mudah untuk tetap menggunakan JavaScript untuk kedua-dua belah bahagian klien / pelayan daripada menulis sesuatu sekali di Java dan sekali lagi dalam JavaScript, yang mungkin perlu anda lakukan jika anda memutuskan untuk memindahkan logik perniagaan yang anda tulis di Java untuk pelayan ke penyemak imbas. Atau mungkin bos akan menegaskan bahawa logik yang anda buat untuk penyemak imbas dipindahkan ke pelayan. Ke arah mana pun, Node.js dan JavaScript menjadikannya lebih mudah untuk memindahkan kod.

Kepimpinan Node di dunia ini nampaknya semakin berkembang. Kerangka web yang paling canggih, seperti React, akan memutuskan pada saat terakhir sama ada menjalankan kod pada pelayan atau pelanggan. Suatu hari ia akan dijalankan pada pelanggan dan pada hari yang lain ia akan berjalan di pelayan. Beberapa logik pintar akan membuat keputusan dengan cepat berdasarkan RAM atau RAM ganti atau yang lain. Beberapa kerangka kerja akan menghantar JavaScript ke pangkalan data sebagai pertanyaan di mana ia dijalankan. Kod anda boleh dijalankan di mana sahaja dan semakin sukar untuk dikekalkan kerana tidak menghantar poskad ke rumah. Cukup gembira kerana anda tidak perlu memikirkan perinciannya.

Tempat Java menang: IDE yang lebih baik

Pembangun Java mempunyai Eclipse, NetBeans, atau IntelliJ, tiga alat terkemuka yang terintegrasi dengan baik dengan debuggers, decompilers, dan server. Masing-masing mempunyai pengembangan selama bertahun-tahun, pengguna yang berdedikasi, dan ekosistem padat yang dipenuhi dengan pemalam.

Sementara itu, kebanyakan pembangun Node.js menaip kata ke dalam baris perintah dan memasukkan kode ke penyunting teks kegemaran mereka. Ya, beberapa penyunting teks terbaik seperti Atom mempunyai koleksi pemalam yang terperinci yang melakukan hampir semua perkara, tetapi walaupun itu terasa seperti Node.js lebih lama daripada Eclipse. Tidak lama lagi kita akan mengganti tetikus kita dengan tongkat kegembiraan Atari.

Beberapa pembangun menggunakan Eclipse atau Visual Studio, yang kedua-duanya menyokong Node.js. Sudah tentu, lonjakan minat pada Node.js bermaksud alat baru akan tiba, beberapa di antaranya, seperti IBM's Node-RED menawarkan pendekatan menarik, tetapi masih jauh dari lengkap atau dominan seperti Eclipse atau IntelliJ.

Yang peliknya ialah pemaju nampaknya tidak menggunakan alat ini. Baris arahan sepatutnya hilang 35 tahun yang lalu dengan kedatangan Mac, tetapi tidak ada yang memberitahu pemaju Node.js. Pilihan ada di sana. WebStorm, misalnya, adalah alat komersial yang kukuh dari JetBrains yang menggabungkan banyak alat bina baris perintah.

Sudah tentu, jika anda mencari IDE yang menyunting dan menyusun kod, alat baru yang menyokong Node.js cukup baik. Tetapi jika anda meminta IDE anda membiarkan anda mengedit semasa anda beroperasi pada kod sumber yang sedang berjalan seperti potongan pakar bedah jantung membuka dada, baiklah, alat Java jauh lebih hebat. Semua ada di sana, dan semuanya tempatan.

Di mana Node.js menang: Pertanyaan pangkalan data

Pertanyaan untuk beberapa pangkalan data yang lebih baru, seperti CouchDB dan MongoDB, ditulis dalam JavaScript. Mencampurkan Node.js dan panggilan ke pangkalan data tidak memerlukan pertukaran gear, apalagi perlu mengingati perbezaan sintaks. 

Sementara itu, banyak pembangun Java menggunakan SQL. Walaupun mereka menggunakan Java Java - sebelumnya Derby, sebuah pangkalan data yang ditulis di Java untuk pengembang Java - mereka menulis pertanyaan mereka dalam SQL. Anda akan menganggap mereka hanya memanggil kaedah Java, tetapi anda akan salah. Anda harus menulis kod pangkalan data anda dalam SQL, kemudian biarkan Derby menguraikan SQL. SQL adalah bahasa yang bagus, tetapi sama sekali berbeza dengan Java, dan banyak pasukan pembangunan memerlukan orang yang berbeza untuk menulis SQL dan Java.

Untuk memburukkan lagi keadaan, banyak pengkod Java menggunakan perpustakaan dan skema yang rumit untuk menukar data dari pertanyaan SQL menjadi objek Java agar mereka dapat mengubahnya menjadi templat. Ini adalah proses yang gila, dan akhirnya cukup membazir.

Tempat Java menang: Jenis 

Sebilangan besar kursus pengaturcaraan pengantar terus menggunakan Java kerana banyak pengaturcara serius cenderung menyukai kod yang ditaip secara statik untuk kesederhanaan dan keselamatan. Kodnya terasa lebih ketat setelah penyusun menangkap pepijat yang jelas.

Walaupun begitu, JavaScript semakin meningkat dan beberapa pengembang beralih ke TypeScript, superset JavaScript yang ditaip secara statik yang menerapkan semua sihir pemeriksaan jenis sebelum menyemburkan sesuatu yang berjalan di tumpukan JavaScript penyemak imbas anda. Sekiranya anda menyukai jenis, ini mungkin cukup bagi anda untuk menggunakan JavaScript. Atau anda boleh mengenali tiruan sebagai bentuk sanjungan paling tulus dan tetap menggunakan Java, yang merangkumi penaipan statik sejak awal.

Di mana Node.js menang: Fleksibiliti sintaksis

JavaScript digunakan untuk menjadi bahasa mudah untuk memunculkan kotak amaran yang tidak diingini dan memeriksa borang input. Kemudian komuniti pemaju membuat banyak versi bahasa yang boleh ditranslasikan menjadi sesuatu untuk penyemak imbas. Terdapat kerumunan CoffeeScript yang menawarkan segelintir sintaksis yang berbeza yang dirancang untuk memenuhi selera untuk tanda baca yang lebih bersih. Terdapat kumpulan React / Vue yang menggabungkan HTML dan JavaScript hanya kerana lebih bersih. Terdapat TypeScript untuk pencinta jenis dan LiveScript untuk pemuja bahasa yang berfungsi.

Anda juga akan mendapat banyak kreativiti di dunia Java, tetapi untuk beberapa sebab ia tidak dinyatakan dengan banyak pemproses pra. Terdapat sebilangan bahasa seperti Kotlin, Scala, dan Clojure yang berubah menjadi kod bait untuk JVM, tetapi entah bagaimana mereka merasa cukup berbeza untuk terpisah sebagai bahasa yang terpisah. Semua praprosesor menjadikan kehidupan lebih menyeronokkan bagi pengaturcara JavaScript yang menyukai pelbagai cara untuk merumuskan atau menyusun kod mereka.

Di mana Java menang: Proses membina sederhana 

Alat binaan yang rumit seperti Ant dan Maven telah merevolusikan pengaturcaraan Java. Tetapi hanya ada satu masalah. Anda menulis spesifikasi dalam XML, format data yang tidak dirancang untuk menyokong logik pengaturcaraan. Tentu, agak mudah untuk menyatakan percabangan dengan tag bersarang, tetapi ada sesuatu yang mengganggu tentang menukar gear dari Java ke XML hanya untuk membangun sesuatu. Dengan JavaScript, tidak ada pertukaran gear. 

Node.js mempunyai binaan yang lebih sederhana. Anda hanya akan mengedit kod dan kemudian tekan "jalankan." Itu ketika itu. Oleh kerana pembangun Node telah "memperbaiki" prosesnya, mereka telah menambahkan praprosesor yang menggunakan subdialek JavaScript kegemaran anda dan mengubahnya menjadi sesuatu yang dapat dijalankan. Maka pengurus pakej Node perlu mencari perpustakaan yang tepat. Sebilangan besar masa ini hanya berfungsi, tetapi kadang-kadang tidak dan kemudian anda menghabiskan masa untuk mencari nombor versi yang tepat dari beberapa artifak yang anda bina sendiri dalam langkah yang terpisah. Dan jika anda melakukan kesalahan pada repositori artifak, nombor versi itu ditembak dan anda mesti memutar roda odometer sekali lagi.

Java juga memiliki proses pembuatan yang kompleks yang hampir sama dengan metode Node.js, tetapi rasanya tidak menjadi lebih rumit. Entah bagaimana Maven dan Semut kelihatan seperti sebahagian dari yayasan Java sekarang. Sebilangan besar tepi kasar sudah lama hilang dan binaannya lebih kerap berfungsi. Sekiranya terdapat beberapa ukuran kerumitan binaan yang mutlak, kedua-dua bahasa mungkin serupa, tetapi ledakan kerumitan JavaScript yang cepat bermakna bahawa Java menang.

Video berkaitan: Petua dan muslihat Node.js

Dalam video penjelasan ini, pelajari beberapa teknik yang dapat meningkatkan pengalaman pengembangan Node anda.

Tempat Node.js menang: JSON

Apabila pangkalan data mengeluarkan jawapan, Java berusaha lebih panjang untuk mengubah hasilnya menjadi objek Java. Pembangun akan berhujah berjam-jam mengenai pemetaan POJO, Hibernate, dan alat lain. Mengkonfigurasinya boleh memakan masa berjam-jam atau bahkan berhari-hari. Akhirnya, kod Java mendapat objek Java setelah semua penukaran. Dan ketika datang ke konfigurasi, dunia Java masih melekat pada XML dan bahkan menawarkan dua penghurai utama untuk memberi para pembangun lebih banyak alasan untuk khawatir.

Hari ini, banyak perkhidmatan dan pangkalan data web mengembalikan data di JSON, bahagian semula jadi JavaScript. JSON sekarang sangat umum dan berguna sehingga banyak pengembang Java menggunakan format, dan sejumlah penghurai JSON yang bagus juga tersedia sebagai perpustakaan Java. Tetapi JSON adalah sebahagian daripada asas JavaScript. Anda tidak memerlukan perpustakaan. Semua ada di sana dan sedia untuk pergi.

Tempat Java menang: Penyahpepijatan jauh

Java mempunyai alat yang luar biasa untuk memantau kelompok mesin. Terdapat banyak kaitan dengan JVM dan alat profil yang terperinci untuk membantu mengenal pasti kemacetan dan kegagalan. Tumpukan perusahaan Java menjalankan beberapa pelayan paling canggih di planet ini, dan syarikat yang menggunakan pelayan tersebut menuntut yang terbaik dalam telemetri. Semua alat pemantauan dan penyahpepijatan ini cukup matang dan siap untuk anda gunakan.

Tempat Node.js menang: Desktop

Mungkin ada beberapa applet Java di luar sana, dan saya masih menyimpan beberapa file Java JAR yang dapat saya klik untuk dijalankan, tetapi untuk sebagian besar dunia desktop sebagian besar bebas dari Java. JavaScript, di sisi lain, terus menangkap lebih banyak tindakan ketika penyemak imbas memakan sebahagian besar peranan untuk desktop kita. Semasa Microsoft menulis semula Office untuk berfungsi di penyemak imbas, die dilancarkan. Sekiranya anda masih tertanya-tanya, ada pilihan menarik seperti Electron yang mengambil kod web anda dan mengubahnya menjadi aplikasi desktop yang berdiri sendiri.

Tempat Java menang: Pegangan tangan

Aplikasi Android sering ditulis di Java dan 90 persen telefon baru menggunakan beberapa versi Android. Ramai orang bahkan tidak lagi menggunakan desktop kerana telefonnya cukup baik untuk semuanya.

Sudah tentu ada sedikit kekeliruan. Banyak pembangun menulis aplikasi web Node.js yang menyasarkan penyemak imbas mudah alih pada iPhone dan Android. Sekiranya ini dilakukan dengan baik, prestasi sering kali cukup baik.