Es ist eine bekannte Tatsache, dass moderne Webanwendungen von Tag zu Tag mehr genutzt werden. Die Entwicklung ist wirklich schnell und ermöglicht die Veröffentlichung von Anwendungen auf allen Plattformen, wobei die einzige Anforderung darin besteht, eine Umgebung zu haben, die ein bestimmtes technisches Paket verarbeitet. Die Sprache, die in dieser Umgebung als König unter allen anderen bezeichnet werden kann, ist JavaScript. Heute möchte ich Ihnen einige Fakten über die Softwareentwicklung im Zusammenhang mit dieser Sprache mitteilen.
Definition der schnellen Entwicklung von Anwendungen
Die Formulierung "schnelle Entwicklung" kann auf viele Arten falsch interpretiert werden. Um dies zu vermeiden, sollten wir erklären, was unsere Erwartungen sind. Nun, der wichtigste Punkt ist das Budget. Um viele Versionen der gleichen Anwendung zu entwickeln, brauchen wir viele Entwickler aus verschiedenen technischen Bereichen und müssen jeden einzelnen von ihnen bezahlen. Um native mobile Anwendungen zu entwickeln, müssen wir unsere Code die auf beiden Plattformen - Android und iOS - gut funktionieren sollen. Ein gängiger Ansatz besteht darin, beide Anwendungen ähnlich zu halten, die gleiche API zu verwenden, das gleiche Verhalten beizubehalten usw. Infolgedessen müssen wir den Code duplizieren, um zwei Versionen der gleichen Anwendung zu erstellen. JS ist eine Sprache, mit der wir gleichzeitig mobile Anwendungen und Webanwendungen erstellen können. Klingt unmöglich? Lassen Sie mich erklären, wovon ich spreche.
Mobil? Web? Das ist mir egal.
Nehmen wir an, wir möchten eine Anwendung erstellen, die die React-Bibliothek verwendet. Diese Bibliothek kann für die Erstellung von Webanwendungen und mobilen Anwendungen mit nativen React verwendet werden. Die logischen Mechanismen der Anwendung, wie Autorisierung, Berechnung, Filterung von Daten und so weiter, können mit React-Hooks durchgeführt werden. Der Punkt ist, dass diese Hooks von beiden Versionen der Anwendung - Web und Mobile - gemeinsam genutzt werden können. Dank dieser Option haben wir die folgenden Einsparungen:
- Es ist nicht nötig, den Code, der für dieselbe Sache verantwortlich ist, zu duplizieren,
- Es besteht keine Notwendigkeit, native Entwickler für mobile Geräte einzustellen, um denselben Teil der Anwendungen zu implementieren,
- Es besteht keine Notwendigkeit, verschiedene Sprachen zu mischen, um dieselbe Anwendung für verschiedene mobile Plattformen (Android/iOS) zu implementieren,
- Ein Entwickler kann für die Implementierung bestimmter Anwendungsfunktionen auf allen Plattformen zuständig sein.
Um diesen Absatz zusammenzufassen - es geht nicht darum, dass eine Codebasis alle Versionen der Anwendung versorgt, obwohl wir den gemeinsamen Code aufteilen und in jeder Version verwenden können, um den Entwicklungsprozess zu beschleunigen.
Fazit: Wenn Sie eine Webanwendung und eine mobile Anwendung gleichzeitig erstellen möchten, sollten Sie die React-Bibliothek in Betracht ziehen, die eine gemeinsame Codebasis für die mobile und die Webversion der Anwendung bietet.
Aber was ist mit dem Backend?
Wenn man vor einigen Jahren über das Backend sprach, hätten sich wahrscheinlich nur wenige Leute vorstellen können, dass dessen Wartung mit Hilfe einer Sprache wie JS. Die Entwicklung dieser Sprache ist erstaunlich und ihre Früchte können bis heute geerntet werden.
Wovon ich spreche? Wenn Sie den richtigen JS-EntwicklerEs stellt sich heraus, dass sie nicht nur das Frontend der Anwendung schreiben können, sondern auch das Backend - das heißt, sie sind für die Verarbeitung von Daten auf dem Server, die Kommunikation mit der Datenbank, verschiedene Arten von Integrationen usw. verantwortlich. Zögern Sie noch oder sind Sie nicht von dieser Sprache überzeugt? Es gibt keinen Grund, diese Einstellung zu haben! Backend mit JS kann auf zwei populäre Arten implementiert werden - in einem erweiterbaren und konfigurierbaren Modus, den uns express.js bieten kann, und in einem strukturierten Modus, der das DI-Muster nest.js verwendet.
Beide Lösungen sind äußerst beliebt und werden in vielen Produktionsanwendungen eingesetzt, deren Besitzer "Tech-Giganten" in ihrer Branche sind. Ich denke, sie sind ausgereift genug, um Sie zu überzeugen, sich für eine der beiden Lösungen zu entscheiden.
Immer noch nicht genug? Ähnlich wie bei der gemeinsamen Nutzung von Code zwischen Web- und mobilen Anwendungen kann das Backend Ressourcen sowohl mit den ersteren als auch mit den letzteren gemeinsam nutzen. Das Schlüsselwort ist hier TypeScript - es ermöglicht uns unter anderem die gemeinsame Nutzung einer Codebasis, d. h. einer gemeinsamen Datentypdefinition für alle Plattformen.
Mit Anwendungen, die ausschließlich auf dem JavaScript / TypeScript Durch die Verwendung von Monolith können wir eine Menge Codezeilen einsparen, die wir in nativen Programmiersprachen duplizieren müssten. Andererseits können wir durch die Verwendung derselben Sprache an allen Fronten eine riesige Menge an Logik für alle Anwendungen gemeinsam nutzen, was die Zeit, in der eine bestimmte Anwendung erstellt werden kann, definitiv verkürzen würde. Hört sich das nicht großartig an?
Kann JS Desktop-Anwendungen antreiben?
Es hat sich herausgestellt, dass Technologien für die Erstellung von Browseranwendungen sich hervorragend für die Wartung von Anwendungen eignen, die wir in ihrer Desktopform verwenden - ein gutes Beispiel hierfür ist Slack. Slack ist eine Anwendung, die für Team Kommunikation - abgesehen vom Standard-Messaging bietet es viele verschiedene Funktionen und verschiedene Arten von externen Integrationen. All dies macht sie zu einer der beliebtesten Anwendungen, die vor allem in der IT-Branche eingesetzt wird.
Wie sich herausstellt, verwendet Slack auch Webtechnologien (und damit JavaScript), um seine Anwendungsschnittstelle zu erstellen. Die Grundlage, die es ermöglicht, solche Anwendungen auf Ihrem Desktop auszuführen, ist Elektron. Die Erstellung von grafischen Oberflächen mit Webtechnologien macht es viel einfacher, schneller und generell möglich, Anwendungen für verschiedene Plattformen gleichzeitig zu entwickeln.
Ist JS reif genug?
Wenn man den Frontend-Teil der Anwendung betrachtet, gibt es keine Illusion, dass JS ist die einzige und exklusive Sprache, die das Ökosystem hier antreibt. Im Moment gibt es keine brauchbaren Alternativen, die diesen Teil der Anwendung ersetzen können (obwohl ich denke, dass WebAssembly uns in Zukunft überraschen könnte). Wenn wir also von der Reife von JS auf dem Frontend sprechen, besteht kein Zweifel, dass es die einzige königliche Sprache ist.
Wenn wir über das Backend sprechen, mögen viele Entwickler schockiert sein oder sofort verneinen, dass JS als Programmiersprache für das Backend geeignet ist. Die Angelegenheit muss jedoch objektiv analysiert werden.
Viele Cloud-Provider bieten SDKs an, mit denen Sie direkt die Wolke Methoden. Seltsamerweise ist eine der beliebtesten Registerkarten, gleich neben C#, Go und Javaist Node.js. Es stellt sich heraus, dass diese Plattform ideal für die Skalierung und Erstellung von Anwendungen auf der Grundlage von Microservices oder einer serverlosen Architektur ist. Fazit - JS ist eine der beliebtesten Sprachen für die Entwicklung von Anwendungen auf der Grundlage von Microservices/serverloser Architektur. Auf den Bildschirmen unten können wir sehen, dass die heilige Dreifaltigkeit (Google Computing Services, AWS, Azure) der Cloud-Anbieter es uns ermöglicht, Anwendungen zu entwickeln, die Knoten.js.
Was das node.js-Ökosystem betrifft, so ist wahrscheinlich jeder mit einer Bibliothek namens express.js vertraut - es handelt sich um ein einfaches und unkompliziertes Tool, mit dem Sie Pfade definieren und sie dann mit entsprechenden Daten füttern können, die auf der JS-Seite ordnungsgemäß verarbeitet wurden. Darüber hinaus ist das Muster, das bei den in express.js verarbeiteten HTTP-Anfragen verwendet wird, zu einem der beliebtesten im gesamten Ökosystem geworden und stellt eine Art Muster für verschiedene andere Bibliotheken dar, die z. B. eine serverlose Architektur verwenden.
Fazit - JS ist eine Sprache, die reif genug ist, um alle Karten auf den Tisch zu legen und sowohl Frontend als auch Backend zu bauen. Darüber hinaus ist es eine recht frische Sprache, die leicht ihren Weg in moderne Anwendungsarchitekturen findet. Es ist großartig, dass ein Programmierer, der eine Sprache beherrscht, beide Seiten (Full Stack) einer Anwendung meistern kann.
Ist JS schnell genug?
Nun, die am häufigsten verwendete Engine für die Ausführung von JS-Code ist v8, die auf der Sprache C++ basiert. Dieser von Google entwickelte Motor ist für die Ausführung von Anwendungen für Webplattformen bestimmt. Interessant ist, dass diese Engine den JS-Code nicht interpretiert. Stattdessen führt sie etwas aus, das "JIT" genannt wird - "just in time compilation". Dadurch müssen wir den JS-Code nicht Zeile für Zeile interpretieren, sondern kompilieren ihn einfach und führen ihn aus. Das ist sogar noch schneller und bringt uns wirklich gute Leistungsergebnisse.
Ist JS hinsichtlich der Leistung fair genug? Ja, das ist es. Solange Sie Ihre Algorithmen fair genug halten, ist es kein Problem, JS auf der Serverseite zu verwenden. Außerdem sollten Sie Ihren Code so asynchron wie möglich halten. Mit diesen Praktiken kann Ihr Code parallele Anfragen ohne Probleme verarbeiten. Sie müssen sich wegen der Leistung keine Gedanken über den Technologietausch machen - vor allem, wenn die Architektur der Anwendung skalierbar ist.
Ich habe die Leistung und die Benchmarks in diesem Artikel bereits ausführlich besprochen.
Ist JS nicht eine solche Eigenart unter den anderen Sprachen?
Nun, das sind Dutzende von Meinungen, dass die JS-Sprache sich in einigen Fällen seltsam verhält und der Umgang damit etwas ist, das Ihren Kopf während des Entwicklungsprozesses explodieren lassen wird. Ich kann dem nicht zustimmen 🙂 Wie jede andere Sprache hat sie einige Muster/Verhaltensweisen, die nicht elegant sind, aber wenn man versteht, wie sie funktionieren und was ihre Ziele sind, ist die Entwicklung von Anwendungen mit JS nicht unangenehm.
Besonders die Bemerkung "asynchron" direkt vor JS lässt manche Entwickler erschaudern. Es ist schwer zu verstehen, wenn man noch keine Erfahrungen damit gemacht hat. Es ist jedoch ein Teil von JS, der es uns ermöglicht, moderne Lösungen auf einfache Weise zu entwickeln. Werfen wir einen Blick auf Websockets: Da sie ereignisbasiert sind, kann jede der verbundenen Einheiten - der Benutzer und der Server - parallel Ereignisse senden und empfangen. Wenn der Code, der diese Anwendung antreibt, asynchron genug ist und den Hauptthread nicht blockiert, können wir leicht Tausende von Anfragen in kurzer Zeit verarbeiten.
Vergleichen wir JS und PHP mit dem Kontext von Websockets. PHP ist eine synchrone Programmiersprache, so dass das Lösen von Websocket-Themen ein großes Problem darstellt. Wir können sehen, dass PHP Muster von JS erhält, um interaktive Backend-Anwendungen zu erstellen, die moderne Technologien wie Webrtc oder Websockets nutzen können.
Mischen Sie alles zusammen
Wenn wir alle Absätze zusammenfassen, können wir einige Fakten feststellen:
JavaScript ist eine Sprache, mit der alle Arten von Anwendungen erstellt werden können - von Web- über Mobil- bis hin zu Desktop-Anwendungen;
In JS geschriebene Anwendungen können verschiedene Codefragmente miteinander teilen, z. B. diejenigen, die für die Datenformatierung oder Typen in Typescript zuständig sind;
Dank des Wachstums des Internets ist die Leistung, die JS bietet, gut genug, um sich sowohl für die Entwicklung von Frontend- als auch von Backend-Anwendungen zu entscheiden;
Dank seines außergewöhnlichen Designs unterstützt der JavaScript moderne Anwendungsinfrastrukturen wie Websockets und WebRTC;
Wenn Sie einen gut ausgebildeten Entwickler einstellen, können Sie das Potenzial dieser Sprache auf jedem verfügbaren Frontend nutzen;
JS ist eine Sprache, die seit einigen Jahren immer beliebter wird, und es gibt keine Anzeichen dafür, dass sich dies in irgendeiner Weise ändern wird.
Um meine zugegebenermaßen voreingenommene Meinung zu äußern - die Nutzung der Option von JavaScript, denselben Code an allen verfügbaren Fronten wiederzuverwenden, ist etwas, das sicherlich die Anwendungsentwicklung beschleunigen und die Anzahl der Entwickler reduzieren wird, die an der Wartung des Backends von Anwendungen beteiligt sind, die in anderen Technologien geschrieben wurden. Zur Bestätigung sei daran erinnert, dass eine große Anzahl so genannter IT-Giganten diesem Muster folgen und einen großen Teil der Codebasis plattformübergreifend gemeinsam nutzen. Trotz unterschiedlicher Meinungen über diese Sprache muss man berücksichtigen, dass die Statistiken über die Nutzung und die Zufriedenheit mit der Nutzung von JS wächst von Jahr zu Jahr, und seine Entwickler können sich leicht an den Trend zum Full Stack anschließen.
Lesen Sie mehr:
Warum Sie (wahrscheinlich) Typescript verwenden sollten
Wie kann man ein Projekt nicht durch schlechte Programmierpraktiken zerstören?
Strategien zum Abrufen von Daten in NextJS