Node.js bukanlah produk yang sempurna, ia memiliki kekurangan (menggunakan JS?), Beberapa di antaranya berlarut-larut dari tahap awal pengembangan karena keputusan keliru yang dibuat oleh Ryan Dahl, yang secara singkat diingat di artikel Bagaimana pencipta node.js menjadi frustrasi di dalamnya . Seperti yang sering terjadi, dalam beberapa kasus sulit atau tidak mungkin untuk menemukan alternatif dari sistem ini, terutama di sektor usaha. Tetapi jika Anda tidak perlu mendukung kode lama yang besar, yang akan memasok programmer dengan pekerjaan selama bertahun-tahun yang akan datang, maka Anda dapat mencari solusi lain. Anda bisa membaca tentang "Node.js killer" pada artikel yang disebutkan di atas, sebagian lagi akan dibahas di artikel ini.
ASP.NET
"Seorang teman lama lebih baik dari dua teman baru". ASP.NET memiliki sejarah panjang. Teknologi Active Server Pages, yang menjadi dasar dari layanan ASP.NET, dikembangkan pada akhir abad terakhir. Tentu saja, waktu pengembangan tidak selalu merupakan hal yang baik, tetapi umur panjang produk berbicara banyak. Meskipun ASP.NET memiliki prinsip operasi yang sangat berbeda, ASP.NET bukan hanya lingkungan untuk menjalankan kode program dan modul penghubung, ini adalah platform untuk membuat layanan web; itu sering digunakan untuk memecahkan masalah yang mirip dengan Node.js.
Jika Node.js adalah gagasan dari tim kecil dan dalam bentuk paling dasar adalah lingkungan untuk meluncurkan program JS di luar browser dengan akses ke I / O, maka ASP.NET adalah produk khas dari perusahaan besar. Awalnya berisi sejumlah besar pustaka default yang segera memungkinkan Anda untuk mulai mengembangkan. Node berkembang berkat komunitas pengembang, dan oleh karena itu sistem harus terlebih dahulu dilengkapi dengan semua modul yang diperlukan, yang sungguh luar biasa. Kata "Halo dunia!" Yang paling sederhana di Node akan menyeret beberapa ribu file ke dalam sistem. Selain itu, kuantitas tidak selalu berkembang menjadi kualitas, terkadang tampaknya para pengembang bahkan siap untuk menjejalkan “i ++” ke dalam modul terpisah, yang kemudian akan diunduh jutaan kali, dan pembaruan atau penghapusan mendadak dari paket ini akan menyebabkan masalah kompatibilitas yang serius atau crash npm.Di ASP, keamanan dan pembaruan dipantau oleh ekosistem Microsoft, perpustakaan yang ditulis olehnya dan perusahaan besar lainnya diperiksa dengan cermat untuk kesalahan dan masalah kompatibilitas ...
Terlepas dari banyak perbedaan, salah satu yang utama adalah pendekatan yang berbeda untuk distribusi komputasi. Di Node.js, semuanya dilakukan dalam satu utas, tetapi menggunakan I / O asinkron. ASP awalnya bekerja di multithreading dan sinkronis I / O. Opsi pertama menunjukkan kinerja yang luar biasa ketika layanan memerlukan pertukaran yang sangat intensif, tetapi dengan biaya beberapa kerumitan kode. Di versi terbaru produk, perbedaan ini diselesaikan, di Node.js dan ASP.NET, pola async \ await digunakan.
JS telah berkembang pesat selama perkembangannya, tetapi masih tetap menjadi bahasa tanpa pengetikan yang kuat dan kalah dari C #, yang awalnya dikembangkan di bawah pengaruh langsung C ++, yang sejak awal memiliki pengetikan dan OOP yang kuat. Konsekuensi dari ini adalah bahwa C # lebih kuat dan lebih konsisten, dan tidak memerlukan add-on seperti TS. Namun di sisi lain, JS, karena kesederhanaannya, lebih diminati saat memprogram layanan mikro, yang tidak memerlukan kemampuan C # yang kompleks.
Selain perbedaan bahasa pemrograman yang digunakan, platform tersebut memiliki ideologi yang berbeda pula. Di ASP.NET, banyak yang telah ditentukan sebelumnya, ia menawarkan semua yang sudah jadi, dimulai dengan struktur file, saat mulai bekerja dengan Node.js, Anda harus memilih semuanya sendiri, yang memberikan banyak fleksibilitas, tetapi memperumit pengembangan. Tetapi ASP.NET memiliki alat debugging, pengujian, dan pemfaktoran ulang yang kuat.
Satu-satunya hal yang ASP.NET kalah serius dari Node.js adalah kemudahan penerapan. Node hanya membutuhkan mesin dan proxy atau Docker. Platform ini dapat dikonfigurasi sendiri atau Anda dapat mengambil gambar VPS yang sudah jadi, yang tersedia dari hampir semua penyedia hosting. Untuk ASP, terlepas dari lintas platform, semuanya tidak begitu mudah, dan gambar siap pakai untuk server hanya tersedia untuk pemain terbesar di level Azure.
Apakah JavaScript benar-benar diperlukan?
Node.js dibuat sebagai runtime untuk JS karena ini adalah bahasa pemrograman yang sederhana dan dapat diakses yang dapat dengan mudah menerapkan beberapa skrip simultan untuk komunikasi aplikasi web dua arah antara browser dan server. ASP.NET juga dibuat untuk menulis aplikasi web, hanya menggunakan metode lain. Deno yang sama terdiri dari beberapa lapisan di atas mesin virtual, yang langsung bekerja dengan sumber daya server. Tetapi tidak perlu menggunakan pembungkus kompleks dari bahasa pemrograman yang tidak berjalan langsung di server dan membutuhkan mesin virtual.
Pergilah
Pada tahun 2007, insinyur perusahaan memutuskan bahwa C ++ tidak memenuhi realitas teknologi komputer saat ini. Diperlukan alat paralelisasi yang efisien, dengan memanfaatkan kemampuan prosesor multi inti dan sistem terdistribusi, pengumpul sampah otomatis, dan beberapa penyederhanaan diperlukan untuk keterbacaan kode yang lebih baik dan kemudahan bekerja dengan jenis.
Tujuan para pengembang bukanlah untuk membuat "versi C ++ yang lebih baik," tetapi untuk membuat bahasa baru lebih dimengerti berdasarkan pengalaman pemrograman mereka. Go diumumkan secara publik pada tahun 2009 dan dengan cepat naik ke hampir 10 bahasa pemrograman teratas (ke-13 di awal tahun 2012). Raymond Dahl sendiri memujinya dengan ekspresi seperti: "Kenapa Node.js, kalau ada bahasa yang begitu indah seperti Go?". Tapi hal baru berlalu, dan bahasanya hampir dilupakan sampai ternyata alat paralelisasinya cocok untuk mengembangkan layanan mikro dalam aplikasi web. Ini mengembalikan bahasa ke popularitas sebelumnya.
Beberapa kerangka kerja web telah ditulis untuk Go, meskipun tidak perlu menggunakannya, karena di luar kotak ia memiliki semua fungsionalitas yang diperlukan untuk memprogram aplikasi web. Deno aslinya ditulis di Go.
Rubi
Dibandingkan dengan Go yang sama, ini bukan bahasa terbaru, dirilis pada tahun 1995. Tidak seperti Go, bahasa ini dikembangkan oleh penggemar tunggal, Yukihiro Matsumoto, yang sangat ingin menciptakan bahasa interpretasi berorientasi objek yang lebih baik daripada Pyton. Bahasa ini tidak segera mendapatkan popularitas, paling tidak karena selama beberapa tahun pertama dokumentasinya hanya dalam bahasa Jepang. Buku-buku dalam bahasa Inggris tidak diterbitkan hingga awal tahun 2000-an, dan pengakuan datang dengan dirilisnya kerangka web Ruby on Rails pada tahun 2005, yang dengan cepat menjadi populer, terutama ketika Apple mengumumkan pada tahun 2007 bahwa ia akan dikirimkan bersama Mac OS X 10.5. .. .
Seperti semua bahasa yang ditafsirkan, kecepatan Ruby relatif lambat, yang sangat memengaruhi kinerja aplikasi web yang ditulis dalam Ruby on Rails. Mengetahui masalah ini, penulis mulai mengembangkan versi bahasa yang akan kehilangan kompatibilitas ke belakang, tetapi akan berjalan lebih cepat, yang dia lakukan pada tahun 2009. Kecepatannya telah meningkat secara signifikan dan sama dengan aplikasi web yang berjalan di bawah .NET dan JVM. Berkat ini, popularitas kerangka kerja meroket. Pada tahun 2018, penulis Ruby merilis versi 2.6, yang mengimplementasikan kompilasi dinamis, yang selanjutnya mempercepat kinerja aplikasi.
Sampai saat ini bahasa Ruby sangat erat kaitannya dengan framework Ruby on Rails.
Eliksir
Erlang adalah bahasa pemrograman lain yang dibuat oleh perusahaan besar. Kali ini orang Swedia dari Ericsson melakukan yang terbaik. Pada tahun 1986, tidak ada yang berpikir untuk mengembangkan aplikasi web, Internet masih dalam proyek, dan bahasa diciptakan untuk menjalankan sistem secara real time. Untuk waktu yang lama Erlang praktis tidak dikenal di luar perusahaan, yang menggunakannya untuk kebutuhan internal, hingga pada tahun 1998 manajemen memutuskan untuk berhenti mendukung bahasanya sendiri dan melarang penggunaannya, mewajibkan pengembang untuk beralih ke Java. Hal ini menyebabkan bahasa dirilis di bawah lisensi terbuka dan didistribusikan di luar perusahaan yang mengembangkannya. Untuk waktu yang lama, ini hanya menarik bagi kalangan kecil ilmuwan, sampai ternyata konsepnya cocok untuk pengembangan arsitektur multiprosesor.
Pada tahun 2012, Jose Walim, salah satu pengembang Ruby on Rails, mendapat ide untuk membuat bahasa pemrograman untuk sistem beban tinggi dan situs web besar. Hasilnya, Elixir dikembangkan , bahasa pemrograman fungsional yang dikompilasi menjadi bytecode untuk mesin virtual Erlang (BEAM). Karena fakta bahwa bahasanya didasarkan pada Erlang, yang dikembangkan untuk peralatan komunikasi pemrograman, Elixir menerima properti unik: toleransi kesalahan, penggantian kode panas(mengubah atau memutar kembali kode program yang sedang berjalan, tanpa memulai ulang) dan kemampuan untuk bekerja dalam waktu nyata. Properti ini memungkinkan Anda membuat sistem beban tinggi yang andal yang mendukung penskalaan horizontal dan vertikal, beroperasi 5-10 kali lebih cepat daripada aplikasi serupa yang ditulis dalam bahasa interpretasi (PHP, Ruby, Python). Tempat kerja pembuat memengaruhi fakta bahwa bahasanya menggunakan sintaks mirip Ruby, dan mudah dipelajari bagi mereka yang menggunakan Ruby on Rails.
Elixir saat ini digunakan oleh perusahaan terkenal seperti Discord, Square Enix, PepsiCo, dan Sketch.
Dan jika, bagaimanapun, JavaScript?
Tetapi jika tidak praktis untuk menguasai bahasa pemrograman baru, bagaimana cara menyeret seluruh Node ke server? Anda dapat melihat runtime JS lainnya.
RingoJS adalah platform multi-threaded yang dibangun di atas JVM dan dioptimalkan untuk dijalankan di server. Mesin Mozilla Rhino, yang memiliki sejarah yang mengesankan, digunakan untuk menafsirkan kode JS. Ini mulai dikembangkan pada tahun 1997, kembali pada masa Netscape, kemudian proyek tersebut dipindahkan ke Mozilla Foundation dan diposting dalam open source.
Aplikasi RingoJS dapat diterapkan di platform Linux apa pun, hingga Raspberry Pi, atau di atas platform cloud seperti Google App Engine. RingoJS adalah sistem modular berdasarkan CommonJS, Anda bahkan dapat menggunakan beberapa modul dari Node.js. Selain itu, mesin Ringo memungkinkan Anda mengintegrasikan pustaka yang ditulis di Java.
PurpleJS adalah kerangka kerja JS sederhana lainnya yang berjalan di JVM. Nashorn (juga badak) yang dikembangkan oleh Oracle digunakan sebagai mesin JS. Ini bukan untuk mengatakan bahwa ini adalah pengganti penuh untuk Node, karena kerangka kerja tidak menggunakan mode asinkron, dan Nashorn tidak memiliki dukungan CommonJS, tetapi sangat ringan dan tidak perlu memulai ulang layanan setelah mengubah kode.
Vert.xBukan lagi kerangka kerja, tetapi seperangkat alat multibahasa yang memungkinkan Anda membuat aplikasi web reaktif asinkron, layanan mikro, dan utilitas jaringan yang berjalan di JVM. Bahasa yang didukung tidak terbatas pada Java dan JS, kecuali mereka Anda dapat menulis aplikasi di Groovy, Ruby, Scala dan Kotlin, sistem modular dengan repositori terpusat didukung, Vert.x mudah diperluas dan dapat diskalakan.
Lucunya proyek ini pertama kali bernama Node.x, kemudian diganti namanya untuk menghindari masalah hukum, karena tujuan saat membuat sama dengan Node.js, dan Tim Fox (pencipta Vert.x) mengatakan bahwa dia terinspirasi dari kesuksesan Dali dan “Saya ingin membuat Node.js di JVM”.
Jika alternatifnya tidak mengesankan dan node.js tetap menjadi cinta Anda
node.js