Was ist JAVA

Wenn wir von Java sprechen, dann geht es uns nicht um die Insel oder den dort angebauten Kaffee sondern um die gleichnamige Programmiersprache. Diese hat sich in den letzten 20 Jahren weltweit und flächendeckend in allen Branchen und Unternehmensgrößen etabliert und dabei zum einen vielen älteren Sprachen den Rang abgelaufen, zum anderen ist Java auch heute noch eine State of the Art Technologie und bietet weiterhin beste Voraussetzungen zur Entwicklung von Anwendungen.

Das ist kein Zufall, denn Java hat viele Stärken.

Java ist als objektorientierte Sprache bestens geeignet, Modelle und Entwurfsmuster umzusetzen, wiederverwendbare Bibliotheken und Endanwenderprogramme zu liefern,

  • Java ermöglicht es, plattformunabhängige Anwendungen zu entwickeln. Zum Ausführen der Programme wird kein spezifisches Betriebssystem benötigt sondern nur eine Laufzeitumgebung - die sogenannte „virtuelle Maschine“ oder „JVM“. Diese existiert vom Großrechner bis hin zu Embedded Systems auf allen relevanten Betriebssystemplattformen und Prozessoren.
  • Java ist im Rahmen eines herstellerübergeifenden Prozesses über die Jahre kontinuierlich weiterentwickelt und verbessert worden. Neue Konzepte und Funktionen werden kontinuierlich ergänzt, neue Standards definiert und implementiert, während bestehende Anwendungen ohne Änderungen lauffähig geblieben sind und sich Performance und Skalierbarkeit nicht hinter nativen Sprachen wie C/C++ verstecken müssen.
  • Unzählige große und kleine Softwareunternehmen entwickeln mit Java und liefern Bibliotheken und Werkzeuge für Java,
  • Für alle Phasen des Softwarelebenszyklus von der Analyse bis zum Betrieb gibt es ausgereifte Werkzeuge zur Unterstützung von Java-Anwendungen,
  • Java hat die weltweit größte Entwicklercommunity mit umfassendem Know-How.
  • Java-basierte Lösungen laufen je nach Bedarf von klein bis groß auf Embedded systems, Mobiltelefonen bis hin zu hochverfügbaren Multiserver-Cluster-Systemen zur Verarbeitung von unternehmenskritischen Daten,
  • Java hat die Verbreitung der Internets begleitet und ermöglicht – von den ersten Applets bis zu heutigen Einkaufsplattformen ist ein Internet ohne Java kaum vorstellbar.

Success Story - Wie setzt syntegris JAVA ein?

Das Team

Bei Syntegris haben wir ganz unterschiedliche Kenntnislevel von ambitionierten Hochschulabsolventen und BA-Studenten bis zu Senior-Entwicklern und Software-Architekten mit jahrzehntelanger Projekterfahrung. Allen gemeinsam ist das Interesse an Softwaretechnik zur Lösung von Kundenproblemen. Berufseinsteiger werden mit eigenen Projektaufgaben in die verwendeten Technologien eingearbeitet und können ihre Java-Kenntnisse von Oracle zertifizieren lassen. Wir legen viel Wert auf Aus- und Weiterbildung und gegenseitige Unterstützung, bieten aber auch Freiräume, um eigene Schwerpunkte zu setzen.

Die Infrastruktur

Wir setzen für Webanwendungen vorrangig auf einen Toolstack mit den aktuellen Versionen von Java SE, Angular, Java/Jakarta EE, Eclipse, JPA/Hibernate, Oracle-Datenbank und Wildfly oder Tomcat. Dazu kommen Maven als Build-System, Subversion oder GIT, UML mit Enterprise Architect, Continuous Integration mit Jenkins, Qualitätssicherung mit JUnit, SonarQube und Selenium. Wenn unsere Kunden andere Werkzeuge einsetzen, gehen wir gerne auf die jeweiligen Randbedingungen ein, dadurch sind wir auch mit Anwendungen auf Basis von Swing, JavaFX, WebSphere, Weblogic, Liferay, Salesforce und weiteren Produkten vertraut.  

JavaScript

JavaScript hat mit Java erstmal nur einen Teil des Namens gemeinsam. Es läuft üblicherweise im Webbrowser, um dort komfortable Anwendungen zu ermöglichen, mittlerweile werden aber auch Serveranwendungen damit geschrieben. Typischerweise kombinieren Mehrschichtanwendungen die Stärken von Java und JavaScript, so dass JavaScript-Anwendungen auf Java-Anwendungen im Backend zugreifen. 

Was bietet syntegris in Bereich JAVA

Dienstleistungen

Im Rahmen der Anwendungsentwicklung bieten wir folgende Dienstleitungen an:

  • Entwicklung von fertigen Lösungen als Gewerk von der Analyse bis zur Produktionsaufnahme,
  • Wartung, Pflege und Betriebsunterstützung   bestehender Anwendungen mit Bereitschaftsdienst,
  • Unterstützung durch unsere Berater vor Ort in Kundenprojekten
  • Performanceanalyse – und Optimierung für bestehende Anwendungen
    (** Anmerkung: mit Link auf die Unterseite zum Thema "Performance" in aktualisierter Fassung **)
  • hersteller- und produktneutrale Technologie- und Architektur-Reviews für bestehende Anwendungen im Java-Umfeld

JAVA Performance

Ihre Java-Anwendung ist nervtötend langsam?

Sie erhalten regelmäßig „OutOfMemory“-Fehler, müssen täglich mehrfach die Laufzeitumgebung durchstarten? Das alles muss nicht sein: Wir können helfen! Heutzutage gibt es keinen Grund mehr, dass Java-Anwendungen anderen Technologien – wie z.B. C/C++ – in bezug auf die Performance prinzipiell unterlegen sind. Dennoch sehen sich Firmen und Endanwender in der Realität leider immer noch viel zu oft mit schlechten Laufzeiten und/oder immer langsamer werdenden Java-Anwendungen konfrontiert, die ständig „OutOfMemory“-Fehler werfen, teilweise sogar mehrmals täglich durchgestartet werden müssen, massiv mehr Rechenleistung (CPU-Zyklen) in Anspruch nehmen als erwartet, zuweilen einfach „hängenbleiben“ usw.

Java Performance – heute kein Thema mehr, wenn man weiß, wie man es richtig macht

Heutzutage sind Java-Anwendungen definitiv für alle Szenarien und Skalierungsstufen (auch im Bereich von „Big Data“!) geeignet und laufen nicht langsamer als vergleichbare Anwendungen in C/C++, wenn man „weiß, wie man es richtig macht“, d.h. typische, kritische Fehler in Programmierung, Konfiguration und Architektur vermeidet und die geeigneten Methoden und Tools einsetzt, um die Performance zu analysieren und zu optimieren.
Typische Schwachstellen in komplexen Enterprise-Java Anwendungen sind beispielsweise:

  • „Memory Leaks“, d.h. nicht mehr benötigter, aber nicht freigegegebener Speicher führt zu immer mehr Garbage Collection Overhead und final zum „OutOfMemory“
  • konfigurationsbedingte „Bottlenecks“, z.B. zu geringe Connection-Pool oder Thread-Pool-Größen
  • ineffiziente Schnittstellen, insb. Datenbankzugriffe
  • schlechte Programmierung, indem wiederverwendbare Objekte nicht gecached oder gepooled, sondern immer wieder neu angelegt werden
  • ineffiziente Verarbeitung komplexer Datenstrukturen (z.B. in-memory statt streaming), insbesondere großer XML- oder JSON-Bäume
  • suboptimal konfigurierte Garbage Collection-Algorithmen und Heap-Strukturen

Wir helfen Ihnen, die Performance-Lücke zwischen Theorie und Praxis zu schließen

Unsere Experten für Java-Performance-Analyse und Tuning sind erfahrene Java-Consultants und Entwickler mit langjähriger Erfahrung in Architektur, Entwicklung und Betrieb von komplexen, unternehmenskritischen Java-Anwendungen (auf der Basis der Java Enterprise Edition und anderer Technologien). Wir kennen die Methoden und Werkzeuge, die es braucht, um bestehende Performance-Probleme in Ihren Produktions- und Testumgebungen in relativ kurzer Zeit zu analysieren, zu priorisieren/gewichten und Verbesserungsvorschläge zu machen. Dabei lassen sich in den allermeisten Fällen beeindruckende Verbesserungen erzielen.


Vor-Ort-Einsatz: Methodisches Vorgehen, Tools, Analyse, Ziele, Prioritäten, Umsetzung

Wir bieten Ihnen Unterstützung bei Performance-Problemen jedweder Art im Rahmen von ein- oder mehrtägigen Einsätzen bei Ihnen vor Ort. Unsere Java-„Firefighter“ nehmen dabei methodisch in einer Top-Down-Analyse, ausgehend von Ihrer Darstellung der aktuellen Probleme, Ihre Java-Anwendungen und Laufzeitumgebungen unter die Lupe. Wir erarbeiten zusammen mit Ihnen bzw. Ihren Entwicklungsteams die Ziele des Einsatzes sowie im Verlauf eine prioritätenbasiere Liste von Änderungsvorschlägen, um Ihren Anwendungen in der aktuell gegebenen Laufzeitumgebung schnell zu besserer Performance zu verhelfen („low hanging fruits“). Zudem leiten wir technologie-, architektur-, hardware- und herstellerneutral langfristige Vorschläge ab, um Ihre Java-Laufzeitumgebung mit dem Fokus auf Performance Monitoring und die weitere Verbesserung der Performance strategisch weiterzuentwickeln. Dabei kommen z.B. folgende Methoden und Tools zum Einsatz:

  • Analyse der Anwendungsarchitektur und Laufzeitumgebung nach der SunTone AM-Methode
  • Garbage Collection-Analyse mit VisualVM, GCViewer, Java Mission Control, JConsole
  • Applikationsprofiling mit Memory-Profiler: Erkennen von Memory Leaks und ineffizienten Objektstrukturen
  • Applikationsprofiling mit CPU-Profiler und/oder Interzeptoren: Erkennen von ineffizientem Code
  • Ggf. Analyse/Vergleich von Lösungsalternativen durch passende Benchmarks
  • Ggf. Analyse von Deadlocks/Verklemmungen mit Thread Dumps u.a.

Hilfe zur Selbsthilfe: Wir zeigen Ihnen, wie es geht

Selbstverständlich zeigen wir Ihnen während des Einsatzes, wie wir dabei vorgehen, welche Tools für welche Analysen jeweils am besten geeignet sind und wie man sie bedient. So können Sie im weiteren Verlauf Ursachen für Performance-Probleme auch selbst systematisch Schritt für Schritt eingrenzen, auffinden und beheben. Auf Wunsch dokumentieren wir natürlich auch (je nach Kundenwunsch mehr oder weniger ausführlich) Ausgangszustand, Erkenntnisse und Ergebnisse/Fortschritte zur besseren Nachvollziehbarkeit und Nachweisbarkeit der Erfolge des Einsatzes für Ihr Management.

1. SunTone AM

suntone

2. JVisualVM mit VisualGC Plugin

jvisual

3. YourKit Profiler

youtkit