Node.jsの5぀の代替手段-そしおそれは理にかなっおいたすか





Node.jsは完璧な補品ではなく、欠点がありたすJSを䜿甚したすか。RyanDahlによる誀った決定のために、開発の初期段階から匕きずり蟌たれたものもありたす。 node.jsはそれに 䞍満を感じたす。よくあるこずですが、特に䌁業郚門では、このシステムに代わるものを芋぀けるこずが困難たたは䞍可胜な堎合がありたす。しかし、プログラマヌに今埌䜕幎にもわたっお䜜業を提䟛する倧芏暡なレガシヌコヌドをサポヌトする必芁がない堎合は、他の゜リュヌションに目を向けるこずができたす。䞊蚘の蚘事で「Node.jsキラヌ」に぀いお読むこずができたす。他のいく぀かに぀いおは、この蚘事で説明したす。



ASP.NET







「叀い友達は2人の新しい友達よりも優れおいたす」。 ASP.NETには長い歎史がありたす。 ASP.NETサヌビスの基盀を圢成したActiveServer Pagesテクノロゞは、前䞖玀の終わりに開発されたした。もちろん、開発時間は必ずしも良いこずではありたせんが、補品の長寿呜はボリュヌムを物語っおいたす。 ASP.NETの動䜜原理はたったく異なりたすが、プログラムコヌドを実行しおモゞュヌルを接続するための環境であるだけでなく、Webサヌビスを䜜成するためのプラットフォヌムでもありたす。 Node.jsず同様の問題を解決するためによく䜿甚されたす。



Node.jsが小さなチヌムの発案によるものであり、最も基本的な圢匏がI / Oにアクセスできるブラりザヌの倖郚でJSプログラムを起動するための環境である堎合、ASP.NETは倧䌁業の兞型的な補品です。最初は、開発をすぐに開始できる倚数のデフォルトラむブラリが含たれおいたす。 Nodeは開発者コミュニティのおかげで開発されるため、システムには最初に必芁なすべおのモゞュヌルを装備する必芁がありたす。これは単玔に信じられないほどです。最も単玔な「Helloworld」 on Nodeは、数千のファむルをシステムにドラッグしたす。さらに、量が垞に品質に達するずは限りたせん。開発者が「i ++」を別のモゞュヌルに詰め蟌み、100䞇回ダりンロヌドし、このパッケヌゞを突然曎新たたは削陀する準備ができおいるように芋えるこずもありたす。深刻な互換性の問題を匕き起こしたり、npmをクラッシュさせたりしたす。ASPでは、セキュリティず曎新はMicrosoft゚コシステムによっお監芖され、ASPや他の倧䌁業によっお䜜成されたラむブラリは、゚ラヌず互換性の問題がないか泚意深くチェックされたす...



倚くの違いにもかかわらず、䞻なものの1぀は、蚈算の分散に察する異なるアプロヌチです。 Node.jsでは、すべおが単䞀のスレッドで実行されたしたが、非同期I / Oを䜿甚しおいたした。 ASPは元々、マルチスレッドおよび同期I / Oで機胜しおいたした。最初のオプションは、サヌビスが非垞に集䞭的な亀換を必芁ずする堎合に優れたパフォヌマンスを瀺したすが、コヌドがいくらか耇雑になりたす。最新バヌゞョンの補品では、これらの違いは解消されおいたす。Node.jsずASP.NETでは、async \ awaitパタヌンが䜿甚されおいたす。



JSは開発䞭に倧きく成長したしたが、匷い型付けのない蚀語のたたであり、元々は匷い型付けずOOPを持っおいたC ++の盎接の圱響䞋で開発されたCに負けおいたす。この結果、Cはより匷力で䞀貫性があり、TSのようなアドオンを必芁ずしたせん。しかし䞀方で、JSはその単玔さのために、耇雑なC機胜を必芁ずしないマむクロサヌビスをプログラミングするずきに需芁が高たりたす。



䜿甚されるプログラミング蚀語の違いに加えお、これらのプラットフォヌムには異なるむデオロギヌがありたす。ASP.NETでは、倚くが事前定矩されおおり、ファむル構造から始めおすべおが既補であり、Node.jsでの䜜業を開始するずきは、すべおを自分で遞択する必芁がありたす。これにより、柔軟性が高くなりたすが、開発が耇雑になりたす。ただし、ASP.NETには、匷力なデバッグ、テスト、およびリファクタリングツヌルがありたす。



ASP.NETがNode.jsよりも倧幅に劣っおいるのは、展開のしやすさだけです。ノヌドに必芁なのは、゚ンゞンずプロキシたたはDockerのみです。プラットフォヌムは、自分で構成するこずも、ほずんどすべおのホスティングプロバむダヌから入手できる既補のVPSむメヌゞを取埗するこずもできたす。ASPの堎合、クロスプラットフォヌムにもかかわらず、すべおがそれほど簡単ではなく、サヌバヌ甚の既補のむメヌゞは、Azureレベルの最倧のプレヌダヌのみが利甚できたす。



JavaScriptは本圓に必芁ですか



Node.jsは、ブラりザヌずサヌバヌ間の双方向Webアプリケヌション通信甚に耇数の同時スクリプトを簡単に実装できるシンプルでアクセス可胜なプログラミング蚀語であるため、JSのランタむムずしお䜜成されたした。ASP.NETは、他の方法のみを䜿甚しおWebアプリケヌションを䜜成するためにも䜜成されたした。同じDenoは、サヌバヌリ゜ヌスず盎接連携する仮想マシンの䞊のいく぀かのレむダヌで構成されたす。ただし、サヌバヌ䞊で盎接実行されず、仮想マシンを必芁ずするプログラミング蚀語の耇雑なラッパヌを䜿甚する必芁はありたせん。



行く







2007幎、同瀟の゚ンゞニアは、C ++が珟圚のコンピュヌタヌ技術の珟実に適合しおいないず刀断したした。マルチコアプロセッサず分散システムの機胜を掻甚する効率的な䞊列化ツヌル、自動ガベヌゞコレクタヌ、およびコヌドの可読性ず型の操䜜を容易にするためのいく぀かの簡略化が必芁でした。



開発者の目暙は、「C ++のより良いバヌゞョン」を䜜成するこずではなく、プログラミングの経隓に基づいお新しい蚀語をより理解しやすくするこずでした。Goは2009幎に公衚され、すぐにプログラミング蚀語のトップ10近くにたで䞊昇したした2012幎初頭の13䜍。Raymond Dahl自身が、「Goのような矎しい蚀語があるのに、なぜNode.jsなのか」ずいう衚珟で、それを賞賛したした。しかし、目新しさは過ぎ去り、その䞊列化ツヌルがWebアプリケヌションでのマむクロサヌビスの開発に適しおいるこずが刀明するたで、蚀語はほずんど忘れられおいたした。これにより、蚀語は以前の人気に戻りたした。



Go甚にいく぀かのWebフレヌムワヌクが䜜成されおいたすが、すぐに䜿甚できるため、Webアプリケヌションのプログラミングに必芁なすべおの機胜を備えおいるため、䜿甚する必芁はありたせん。DenoはもずもずGoで曞かれたした。



ルビヌ







同じGoず比范するず、これは最新の蚀語ではなく、1995幎にリリヌスされたした。 Goずは異なり、Pytonよりも優れたオブゞェクト指向の通蚳蚀語の䜜成に熱心だったた぀もずゆきひろが開発したした。この蚀語はすぐには人気を博したせんでした。特に、最初の数幎間はそのドキュメントが日本語のみであったためです。英語の本は2000幎代初頭たで出版されず、2005幎にRuby on Rails Webフレヌムワヌクがリリヌス され、特にAppleが2007幎にMac OS X10.5に同梱するず発衚したずきに急速に普及したした。 。



すべおのむンタプリタ蚀語ず同様に、Rubyの速床は比范的遅く、Ruby onRailsで蚘述されたWebアプリケヌションのパフォヌマンスに倧きな圱響を䞎えたした。この問題を知っお、著者は䞋䜍互換性を倱うが、はるかに高速に実行されるバヌゞョンの蚀語の開発を開始したした。これは2009幎に行いたした。速床は倧幅に向䞊し、.NETおよびJVMで実行されおいるWebアプリケヌションず同等です。このおかげで、フレヌムワヌクの人気が急䞊昇したした。2018幎、Rubyの䜜成者はバヌゞョン2.6をリリヌスしたした。これは、動的コンパむルを実装し、アプリケヌションのパフォヌマンスをさらに高速化したす。

これたで、Ruby蚀語はRuby onRailsフレヌムワヌクず密接に関連しおいたす。



゚リクサヌ







アヌランは、倧䌁業によっお䜜成されたもう1぀のプログラミング蚀語です。今回ぱリク゜ンのスりェヌデン人が頑匵った。 1986幎、誰もWebアプリケヌションの開発に぀いお考えたせんでした。むンタヌネットはただプロゞェクトにあり、蚀語はシステムをリアルタむムで実行するために䜜成されたした。長い間、Erlangは瀟内のニヌズに䜿甚しおいた瀟倖ではほずんど知られおいたせんでしたが、1998幎に経営陣が自囜語のサポヌトを停止し、䜿甚を犁止し、開発者にJavaぞの切り替えを矩務付けたした。これにより、蚀語はオヌプンラむセンスの䞋でリリヌスされ、それを開発した䌚瀟の倖郚に配垃されたした。長い間、その抂念がマルチプロセッサアヌキテクチャの開発に適しおいるこずが刀明するたで、それは小さな科孊者の茪にしか関心がありたせんでした。



2012幎、Ruby onRails開発者の1人であるJoseWalimは、高負荷システムや倧芏暡なWebサむト甚のプログラミング蚀語を䜜成するずいうアむデアを思い぀きたした。その結果、Erlang仮想マシンBEAM甚にバむトコヌドにコンパむルされた関数型プログラミング蚀語であるElixirが開発 され たした。蚀語が通信機噚のプログラミング甚に開発されたErlangに基づいおいるずいう事実により、Elixirは、フォヌルトトレランス、ホットコヌド眮換などの独自の特性を受け取りたした。 実行䞭のプログラムのコヌドを再起動せずに倉曎たたはロヌルバックするおよびリアルタむムで動䜜する機胜。これらのプロパティを䜿甚するず、氎平スケヌリングず垂盎スケヌリングの䞡方をサポヌトする信頌性の高い高負荷システムを䜜成でき、むンタヌプリタヌ蚀語PHP、Ruby、Pythonで蚘述された同様のアプリケヌションよりも5〜10倍高速に動䜜したす。䜜成者の職堎は、蚀語がRubyのような構文を䜿甚しおいるずいう事実に圱響を䞎え、Ruby onRailsを䜿甚しおいる人にずっおは簡単に習埗できたす。



Elixirは珟圚、Discord、Square Enix、PepsiCo、Sketchなどの有名䌁業で䜿甚されおいたす。



そしお、結局のずころ、JavaScriptの堎合はどうでしょうか。



しかし、新しいプログラミング蚀語を習埗するこずが珟実的でない堎合、ノヌド党䜓をサヌバヌにドラッグするにはどうすればよいでしょうか。他のJSランタむムを芋るこずができたす。







RingoJSは、JVM䞊に構築され、サヌバヌ䞊で実行するために最適化されたマルチスレッドプラットフォヌムです。印象的な歎史を持぀MozillaRhino゚ンゞンは、JSコヌドの解釈に䜿甚されたす。それは1997幎に開発され始め、Netscapeの時代にさかのがり、埌にプロゞェクトはMozilla Foundationに転送され、オヌプン゜ヌスに投皿されたした。



RingoJSアプリケヌションは、Raspberry Piたでの任意のLinuxプラットフォヌム、たたはGoogle AppEngineなどのクラりドプラットフォヌム䞊にデプロむできたす。 RingoJSはCommonJSに基づくモゞュラヌシステムであり、Node.jsのいく぀かのモゞュヌルを䜿甚するこずもできたす。たた、Ringo゚ンゞンを䜿甚するず、Javaで蚘述されたラむブラリを統合できたす。







PurpleJSは、JVMで実行されるもう1぀の単玔なJSフレヌムワヌクです。 JS゚ンゞンには、Oracleが開発したNashornサむを䜿甚しおいたす。フレヌムワヌクは非同期モヌドを䜿甚せず、NashornはCommonJSをサポヌトしおいないため、これがNodeの本栌的な眮き換えであるずは限りたせんが、非垞に軜量であり、コヌドを倉曎した埌にサヌビスを再起動する必芁はありたせん。







Vert.xもはやフレヌムワヌクではありたせんが、JVMで実行される完党に非同期のリアクティブWebアプリケヌション、マむクロサヌビス、およびネットワヌクナヌティリティを䜜成できる倚蚀語のツヌルセットです。サポヌトされおいる蚀語はJavaずJSに限定されたせんが、Groovy、Ruby、Scala、Kotlinでアプリケヌションを蚘述できるこずを陀いお、䞀元化されたリポゞトリを備えたモゞュラヌシステムがサポヌトされおおり、Vert.xは簡単に拡匵およびスケヌラブルです。



プロゞェクトが最初にNode.xず呌ばれ、その埌、法的な問題を回避するために名前が倉曎されたのはおかしいです。䜜成時の目暙はNode.jsの目暙ず同じであり、Tim FoxVert.xの䜜成者は圌がDaliの成功ず「JVMでNode.jsを䜜りたかった」に觊発されたした。



遞択肢が印象的でなく、node.jsがあなたの愛のたたである堎合





node.js






All Articles