Zur Wahl einer passenden Programmiersprache
Wer heute (2013) eine unternehmenskritische Anwendung zu implementieren hat, die- weder virtuelle Maschine
- noch Gerätetreiber,
Begründung:
- Jede Anwendung besteht zu etwa 70% aus Hilfsfunktionen (sog. Infrastruktur).
- Wer Java oder C# wählt, bekommt etwa 90% davon geschenkt,
- wohingegen man mit jeder anderen Programmiersprache maximal 15% davon geschenkt bekommt.
- reduziert den sonst notwendigen Programmieraufwand auf weniger als 40% (!)
- und verringert stark die Gefahr fehlerhafter Implementierung.
die funktional umfassend und von bester Qualität sind. Alle anderen Programmiersprachen stellen nur ganz rudimentäre Standard-Bibliotheken zur Verfügung.
Nochmals also: Möglichst wenig Code selbst schreiben zu müssen, spart hohe Kosten und ist wichtig, weil nur Standardcode i.A. keine Fehler enthalten wird. - In Java oder C# implementierte Anwendungen sind deutlich stabiler als alle anderen, da nur diese beiden Programmiersprachen von Hand geschriebenen Code daran hindern, irrtümlich auf Speicherstellen zuzugreifen, die ihm verboten sind.
- Nur wer Java oder C# verwendet, bekommt bei Absturz der Anwendung die komplette Aufruf-Hierarchie gemeldet (so dass die Zeile im Code, die zum Absturz geführt hat, sofort bekannt ist). Dies kann dem Entwickler sehr viel Arbeit ersparen und verhindert zudem, dass die Ursache gewisser Fehler lange nicht gefunden wird.
- Für Java steht eine direkt über sein Collection API ansprechbare, sehr performante Open Source, file-basierte NoSQL Datenbanklösung zur Verfügung: MapDB, siehe auch die Idee dazu.
- Most popular Java EE Servers
- C# auf Unix erfordert .NET Core: das nicht an MS Windows gebundene, optimierte .NET
für den ist mit Sicherheit
C# die beste Wahl
Begründung:
- Nur Java und C# berücksichtigen alles, was man bis heute über Entwurf und wünschenswerte Eigenschaften universell einsatzbarer Programmiersprachen gelernt hat.
- Nicht zuletzt deswegen sind diese beiden Sprachen einander auch sehr ähnlich (so dass, wer eine gelernt hat, sicher auch die andere wird nutzen können).
- Deutliche Unterschiede zwischen Java und C# finden sich nur dort, wo es darum geht, von Hand geschriebenen Code mit automatisch erstelltem Code zu integrieren. Dieses Feature aber werden nur Chefprogrammierer wirklich im Detail zu verstehen haben.
- Einziger Nachteil von C# ist, dass man sich damit an Microsofts .NET bindet. Das aber spielt keine Rolle für alle, die nur Programmieren lernen wollen. Für sie ist C# die eindeutig bessere Wahl, da Microsofts kostenlos erhältliche interaktive Programmierumgebung — MS Visual Studio Express — eher einfacher zu handhaben ist als das weit allgemeinere Eclipse.
- Wer Android Apps schreiben oder sich an kein bestimmtes Betriebssystem binden möchte, wird an Java nicht vorbeikommen.
Zur Programmierung web-basierter Anwendungen verallgemeinert Microsoft JavaScript zu TypeScript. Google versucht Ähnliches mit dem wohl etwas mächtigeren Dart. Beide werden per Preprozessor nach JavaScript abgebildet (MS JavaScript = WinJS plus GUI Elemente).
Note (March 2016): Wider Erwarten scheint sich eher TypeScript denn Dart durchzusetzen.
Zudem spricht dertzeit viel dafür, dass ECMA-Script und TypeScript zusammenfließen werden.
Man lese den Trendbericht » Noch ist JavaScript nicht die Sprache für alles «.
Wer noch nie mit JavaScript zu tun hatte, aber seine Möglichkeiten kennenlernen möchte, dem empfehle ich die Lektüre des Buches Express.js.
Mit einer der zahlreichen älteren Skriptsprachen (VBScript vielleicht ausgenommen) sollte man sich besser gar nicht mehr befassen — sie alle sind Sackgassen.
Was Microsofts neueste (.NET basierte) Skriptsprache betrifft — die Powershell — so hatte ich bisher stets den Eindruck, es sei besser, stattdessen gleich C# zu verwenden. Wer anders denkt: Als beste kostenlos nutzbare Entwicklungsumgebung dazu gilt Idera Powershell Plus. Zweitbeste sei, schon mit einigem Abstand, PowerGUI.
Note: Der Wert von VBScript und Powerscript wäre deutlich höher, wenn Dokumentation der Schnittstellen, die man damit typischerweise aufzurufen wünscht (die COM-Schnittstellen vor allem auch von Microsofts eigener Software) schnell zu finden wäre — sie ist es nicht ...
Wie extrem wichtig die Wahl einer zum Vorhaben passenden Programmiersprache oder Notation sein kann, zeigt die Entstehungsgeschichte von AngularJS: 17.000 Zeilen Javascript zur Implementierung von Google Feedback konnten der Angular Makros wegen ersetzt werden durch nur 1.500 (knapp 9% also).
Wer je C++ programmiert hat, wird wissen, wie extrem weit sich Code über Makros reduzieren und besser wartbar machen lässt. Steht kein geeigneter Preprozessor zur Verfügung, ist man gut beraten, sich selbst einen zu schreiben. Der wenige Aufwand dafür macht sich stets sehr schnell bezahlt.
Für Java nutze man hierfür z.B. Lombok. Seine @Data Directive ist überzeugendes Beispiel dafür, was Lombok an handgeschriebenen Code einsparen kann und um wie viel verständlicher (für Dritte) — und damit auch weniger fehleranfällig — der von Hand zu schreibende Code dadurch wird.
Den Code zum Zugriff auf relationale DBMS-Systeme drastisch zu reduzieren, dient JPA.
Lese auch:
- Welche Programmiersprache ist die richtige für mich?
- Trend Report: Popularität und Nützlichkeit korrelieren NICHT (siehe z.B. Objective-C)
- Freiberuflich tätige Programmierer werden am ehesten für Java gesucht : vier Mal so häufig wie für C++ und C# (Stand 2014).
Zum Stellenwert von Java
Die nach Java am häufigsten genutze Programmiersprache ist C (siehe den ständig aktuellen TIOBE Index). Der Grund hierfür:
Für Textanalyse, Texttransformation und das Generieren von Texten aller Art ist keine andere Programmiersprache auch nur annäherend so gut geeignet: In C geschriebene Programme, in denen vor allem memcpy(), memcmp(), strcpy(), strcmp() und Varianten von printf() aufgerufen werden, arbeiten fast so effizient wie in Assembler geschriebener Code: Sie sind um Welten schneller als äquivalente Programme, die Stringklassen verwenden.
Die 2015 populärsten Sprachen nennt — auch im Vergleich zu 2014 und 2013 — [popular].
Für welche Sprache 2015 die meisten Programmierer gesucht wurden, zeigt [on demand].
Selbst über die Ausbildung, die Programmier haben, gibt es [Aussagen]. Sie zeigen deutlich, dass die meisten Programmierer wohl keine Informatiker sind. Leider ist nirgendwo untersucht, wie sich das auf die Qualität der durch sie entwickelten Software auswirkt.
Ganz sicher aber gilt: Für Software-Entwickler ist das Beherrschen von Programmiersprachen notwendig, aber keineswegs hinreichend. Viel wichtiger sind Erfahrung, methodisches Vorgehen und hohes Abstraktionsvermögen.
- Zwei Drittel aller Open Source Software ist heute in Java implementiert
- JEE — the Java Enterprise Edition: A set of specifications implemented on top of Java SE with actual implementations available at least from Oracle (like the Glassfish reference implementation), but also from other vendors [Java SE and Java EE sind in Java implementierte Klassenbibliotheken].
- Performanz gängiger Programmiersprachen im Vergleich zueinander
- JavaScript Knowhow
- CLR via C#, CLR = The Common Language Runtime (.NET)
- Erste Schritte mit C# Common Mistakes in using C#, see also what is explained here
- Und danach lese man ...
- Operator ?. in C# (ab Version 6)
- Erste Schritte in Eclipse für Java
- Typesafe und Scala — die derzeit modernste Möglichkeit, auf Java-Basis zu programmieren (und
sich auf einfachem Wege mit funktionaler Programmierung bekannt zu machen)
- Java Advice, C/U Exceptions, Concurrency, Java Tutorials, Java Build Tools, Reuse ...
- Locking Files in Java
- Microservices for Java Developers
- Java SOAP Web Services
- The Observer Pattern — easy to implement in Java 8
- Vorsicht: ...
- The Java Eco System: What system architects should know (2015).
| - Know QUARKUS — the preferred platform for Kubernetes Applications written in Java.
- QUARKUS = Java for the Cloud (2021)
- QUARKUS — Container first, Writing Java JSON Rest Services (2021)
| - Java 8 and more and Functional Interfaces and Selection via Filters
- Spring — eines der hilfreichsten Java Application Architecture Frameworks (insbesondere dann, wenn man Anwendungen per Spring Boot auto-konfiguriert, mehr dazu in [SB])
- JavaFX 8 — GUI-Programmierung in Java
Note: Klassen, die AWT, SWT oder Swing darstellen, braucht und sollte man heute nicht mehr nutzen — sie gelten als überholt und arbeiten auf allzu niedriger Abstraktionsebene. Unter Windows fummelt heutzutage ja auch keiner mehr ohne Not mit der MFC oder gar dem Win32-API herum.
Ob JavaFX (eine J2SE-Technologie) sich wirklich durchsetzen wird, ist 2016 noch unklar: Das Echo der Community reicht von Begeisterung bis hin zu totaler Ablehnung. Derzeit jedenfalls ist JavaFX ganz klar eingeschränkt auf Desktop-Anwendungen. Der Druck seitens HTML5-basierter Technologien ist groß, und sie punkten mit "Zero Installation" — ein wichtiges Argument.
JavaFX-Anwendungen auf mobilen Endgeräten wird es sicher niemals geben.
- Das neue MVC-Webframework in Java EE 8 — nun doch nicht
- RichFaces — GUI-Programmierung in Java auf Basis von
JSF mit AJAX-Unterstützung.
Heute aber scheint für diesen Zweck das ZK Framework besser geeignet. - Stringklassenprobleme, da Java 6 Strings nicht aufwärtskompatibel sind zu Java 7 Strings
- Java and Unicode — How char Values are implemented in Java
- Java Generics verstehen
- Multi-Release JAR Files unterstützt erst Java 9.
- The Java Platform Module System
- Javas Watch Service is to support event-driven application architecture.
- Java EE for Microservices?
- Spring Boot erleichtert die Erstellung moderner Microservices auf Java-Basis in den meisten Fällen ungemein.
- Forget Hand-Coding, our arguments.
- What Java Programmers Should Learn in 2018
- Java 8 Streams should not be confused with Java I/O streams
- Java 8 verstehen
- Reactive Streams in Java 9
- HTTP-RPC for RESTful App Services
- Glassfish vs Tomcat (Note: Glassfish is now Payara,
/M)
- 10 Best Java Framworks in 2018
- Spring Knowhow — recht gute Beispiele, /start here
- 2017: Java 9 — ein ganz wichtiger Fortschritt: Moduls
- Java News (2018)
- Applets, Java Web Start, Corba, JavaEE and JavaFX no longer part of JDK 11 and later. /m
/mm
/RN
- 2018: JavaEE — durch Oracle aufgegeben — lebt weiter als Jakarta EE 9, /R /EE 8 Stepstone
- 2018: JavaFX — durch Oracle aufgegeben — lebt weiter als OpenJFX
- 2018: Use MicroProfile for REST Implementation
- The Top 10 JavaScript Frameworks
- Die Welt der am meisten genutzten Programmiersprachen (2014) /M
- Technologies
- Confessions Of An Angry Programmer
- Eclipse Newsletter is keeping us up to date about JEE (now Jakarta EE)
Wer große Anwendungen in Java schreiben möchte, hat es i.A. nicht leicht, schnell zu sehen, welches der vielen verfügbaren GUI Frameworks für sein Projekt denn wohl das günstigste sein könnte. Ihm mag es dann helfen, zu erfahren, wie sich Vaadin mit bis zu 8 anderen GUI Frameworks vergleicht. Über Spring MVC — das in 2012 (mit 30%) vorwiegend genutzte GUI Framework — sagt jene Seite aber leider gar nichts.
Der Trend geht eindeutig dahin, GUIs nur noch in HTML5 + CSS + JavaScript zu implementieren.
Wer HTML nutzt, sollte HTML5 nutzen (denn diese Version ist allen älteren vorzuziehen und flexibler als XHTML). Wer Zweifel hat, wie weit gängige Browser HTML5 unterstützen, frage HTML5 Test.
stw2899P — Programmiersprache . stw4876EWU: . Energie — News?
Mehr + B G E + S H A + More
Welche Programmiersprachen 2014 in Stellenanzeigen am häufigsten genannt wurden
Jakarta EE — successor of JavaEE — is to become the future of cloud-native Java
Web Development Framework Trends
Spring Boot Tutorial