Java-Tipps: Unterschied zwischen den Versionen
Codica (Diskussion | Beiträge) |
Codica (Diskussion | Beiträge) |
||
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 28: | Zeile 28: | ||
* Umfangreiches Verzeichnis freier Javaapplikationen findet sich bei [http://java-apps.org/ Java-Apps.org]. | * Umfangreiches Verzeichnis freier Javaapplikationen findet sich bei [http://java-apps.org/ Java-Apps.org]. | ||
+ | === Java auf dem Desktop === | ||
+ | |||
+ | ==== Links zu Java-Desktop-Anwendungen ==== | ||
+ | |||
+ | Java-Desktop-Anwendungen können sich unter [[Windows]] so registrieren, dass sie mit Hilfe von Links aus dem Browser aufgerufen werden können. | ||
+ | |||
+ | Siehe [[Windows#Aufruf_von_Programmen_mit_URLs]] | ||
+ | |||
+ | |||
+ | Das ist nicht zu verwechseln mit Protokoll-Handlern, die Aufrufe von unbekannten Protokollen aus dem Java-Programm selbst behandeln: | ||
+ | * [http://mjremijan.blogspot.com/2012/02/create-your-own-java-url-handlers.html Protokoll-Handler für Java-interne URL-Aufrufe] | ||
=== Dokumentation zu J2SE === | === Dokumentation zu J2SE === | ||
Zeile 54: | Zeile 65: | ||
=== Kommandozeilenparser === | === Kommandozeilenparser === | ||
+ | * [https://picocli.info/ picocli] ist eine Bibliothek zum Parsen der Kommandozeile mit vielen Funktionen, u.a. integrierter [[Tab-Completion]] | ||
* [http://jewelcli.sourceforge.net/usage.html JewelCLI] ist ein OptionsParser, der auf Annotationen setzt. | * [http://jewelcli.sourceforge.net/usage.html JewelCLI] ist ein OptionsParser, der auf Annotationen setzt. | ||
− | * [http://commons.apache.org/cli/ CLI] ist eine [[Apache]]-Komponente, die die Verarbeitung von Kommandozeilenparametern erleichtert. | + | * [http://commons.apache.org/cli/ Commons CLI] ist eine [[Apache]]-Komponente, die die Verarbeitung von Kommandozeilenparametern erleichtert. |
− | * [http://jopt-simple. | + | * [http://jopt-simple.github.io/jopt-simple/examples.html JOpt-Simple] |
=== Webanwendungen === | === Webanwendungen === | ||
Zeile 63: | Zeile 75: | ||
* Die Übersetzung von [[Java]] nach [[JavaScript]] leistet das [http://code.google.com/intl/de-DE/webtoolkit/ Google Web Toolkit]. | * Die Übersetzung von [[Java]] nach [[JavaScript]] leistet das [http://code.google.com/intl/de-DE/webtoolkit/ Google Web Toolkit]. | ||
** [http://www.netbeans.org/kb/docs/web/quickstart-webapps-gwt.html Anleitung zur Nutzung des Google Web Toolkit] mit der [[Netbeans]]-IDE. | ** [http://www.netbeans.org/kb/docs/web/quickstart-webapps-gwt.html Anleitung zur Nutzung des Google Web Toolkit] mit der [[Netbeans]]-IDE. | ||
+ | |||
+ | ==== Simple HTTP-Server ==== | ||
+ | |||
+ | Das JDK kommt bereits mit einem eingebauten einfachen HTTP-Server: | ||
+ | * https://javadoc.scijava.org/Java13/jdk.httpserver/com/sun/net/httpserver/package-summary.html | ||
+ | * https://javadoc.scijava.org/Java13/jdk.httpserver/com/sun/net/httpserver/spi/HttpServerProvider.html | ||
+ | * https://dzone.com/articles/simple-http-server-in-java | ||
+ | * https://gist.github.com/gitawego/14e15456e4d36a26aac7695648565329 | ||
+ | * https://www.logicbig.com/tutorials/core-java-tutorial/http-server/http-server-basic.html | ||
+ | |||
+ | Noch mehr Basic ist die Programmierung auf den IO-Sockets: | ||
+ | * https://dev.to/mateuszjarzyna/build-your-own-http-server-in-java-in-less-than-one-hour-only-get-method-2k02 | ||
+ | |||
==== Vaadin ==== | ==== Vaadin ==== | ||
Zeile 80: | Zeile 105: | ||
* https://sparktutorials.github.io/2016/06/10/spark-basic-structure.html | * https://sparktutorials.github.io/2016/06/10/spark-basic-structure.html | ||
* https://zeroturnaround.com/rebellabs/sparkjava-is-an-amazing-java-web-framework-do-you-really-need-it/ | * https://zeroturnaround.com/rebellabs/sparkjava-is-an-amazing-java-web-framework-do-you-really-need-it/ | ||
+ | |||
+ | ==== JavaLite ActiveWeb ==== | ||
+ | |||
+ | Siehe http://javalite.io/activeweb | ||
+ | |||
+ | ==== molecule ==== | ||
+ | [http://molecule.vtence.com/ Molecule] ist ein kleines Framework für Java, das einen Java-Webserver (Simple oder Undertow) integriert und ähnlich wie [[Express]] für [[Node.js]]-Anwendungen zu benutzen ist. | ||
+ | |||
+ | Siehe | ||
+ | * https://github.com/testinfected/molecule | ||
=== Dateiverwaltung === | === Dateiverwaltung === | ||
Zeile 97: | Zeile 132: | ||
==== JSON ==== | ==== JSON ==== | ||
+ | * [https://github.com/stleary/JSON-java org.json or JSON-java] | ||
* [http://code.google.com/p/json-simple/ Json.Simple], Java Library to convert from and to JSON | * [http://code.google.com/p/json-simple/ Json.Simple], Java Library to convert from and to JSON | ||
* Siehe auch [http://jsontools.berlios.de/ JSONTools] | * Siehe auch [http://jsontools.berlios.de/ JSONTools] | ||
Zeile 107: | Zeile 143: | ||
* [http://jexcelapi.sourceforge.net/ jExcelAPI] und | * [http://jexcelapi.sourceforge.net/ jExcelAPI] und | ||
* [http://poi.apache.org/ Apache POI] (auch für das [http://poi.apache.org/spreadsheet/index.html 2007er-XML-Format]) | * [http://poi.apache.org/ Apache POI] (auch für das [http://poi.apache.org/spreadsheet/index.html 2007er-XML-Format]) | ||
+ | ** Siehe zu Apache POI die [https://www.callicoder.com/java-read-excel-file-apache-poi/ Anleitung zum Lesen von Excel-Dateien in Java] | ||
gelesen und geschrieben werden. | gelesen und geschrieben werden. | ||
Zeile 132: | Zeile 169: | ||
* [http://www.lug-kr.de/wiki/JasperReports Vergleich verschiedener Berichtstools] | * [http://www.lug-kr.de/wiki/JasperReports Vergleich verschiedener Berichtstools] | ||
+ | |||
+ | ==== BIRT ==== | ||
+ | |||
+ | https://eclipse.github.io/birt-website/docs/what-is-birt | ||
==== JasperReports ==== | ==== JasperReports ==== | ||
Zeile 204: | Zeile 245: | ||
* Ein [http://java.sun.com/docs/books/tutorial/jdbc/overview/index.html Überblick über JDBC/SQL] findet sich auf java.sun.com. | * Ein [http://java.sun.com/docs/books/tutorial/jdbc/overview/index.html Überblick über JDBC/SQL] findet sich auf java.sun.com. | ||
* [http://www.netbeans.org/kb/55/derby-demo.html Mit NetBeans-IDE auf Datenbanken zugreifen] | * [http://www.netbeans.org/kb/55/derby-demo.html Mit NetBeans-IDE auf Datenbanken zugreifen] | ||
+ | |||
+ | |||
+ | ===== Query-Builder ===== | ||
+ | |||
+ | Um die Tippfehler von SQL-Queries in Java-Code zu reduzieren, gibt es leicht- oder schwergewichtige Query-Builder, bei denen die SQL-Sprachkonstrukte in Java-Methoden oder -Eigenschaften abgebildet werden. Vertreter sind z.B. | ||
+ | * [https://www.jooq.org/ jOOQ] - mächtig, unterstützt auch SQL-Dialekte der einzelnen Datenbanken, kostenlos (nur) für Open Source Datenbanken | ||
+ | * [https://openhms.sourceforge.io/sqlbuilder/ OpenHMS SqlBuilder] - leichtgewichtiger Query-Builder | ||
+ | * [http://www.querydsl.com/ QueryDSL ] | ||
+ | * [http://www.mybatis.org/mybatis-3/getting-started.html MyBatis] | ||
+ | * [https://calcite.apache.org/apidocs/org/apache/calcite/sql/util/SqlBuilder.html Apache Calcite SqlBuilder class] - Low level SQL-Query-Unterstützung | ||
+ | |||
+ | Siehe auch [https://calcite.apache.org/docs/ Apache Calcite] - ein Datenbank-Adapter | ||
+ | |||
+ | ===== Object Relational Mapper ===== | ||
+ | Es gibt schwergewichtige Zwischenschichten, die SQL-Datensätze auf Java-Objekte spiegeln. Siehe z.B. | ||
+ | * [[Hibernate]] | ||
+ | * [http://javalite.io/activejdbc ActiveJDBC] | ||
==== SQL ==== | ==== SQL ==== |
Aktuelle Version vom 24. April 2023, 09:32 Uhr
Siehe oldCt:Java-Tipps
Java 2 Standard Edition
Installation
auf einem Raspberry Pi
Zur Installation von Oracle Java 8 JDK auf einem Raspberry Pi siehe
aus dem webupd8team-Repository
sudo add-apt-repository ppa:webupd8team/java sudo aptitude update && sudo aptitude install oracle-java8-installer
Siehe
Java-Sprachkonstrukte
Lambdas
Siehe
Java-Anwendungen
- Umfangreiches Verzeichnis freier Javaapplikationen findet sich bei Java-Apps.org.
Java auf dem Desktop
Links zu Java-Desktop-Anwendungen
Java-Desktop-Anwendungen können sich unter Windows so registrieren, dass sie mit Hilfe von Links aus dem Browser aufgerufen werden können.
Siehe Windows#Aufruf_von_Programmen_mit_URLs
Das ist nicht zu verwechseln mit Protokoll-Handlern, die Aufrufe von unbekannten Protokollen aus dem Java-Programm selbst behandeln:
Dokumentation zu J2SE
- Offizielle Dokumentation
- Eclipse-Help
- J2SE V6 API-JavaDoc
- Schöne Java-FAQ mit vielen Problemlösungen.
- Openbook zu Java2 (deutsch).
- Fortsetzung des Open Books für Entwickler mit guten Grundkenntnissen
- Java Glossary mit vielen Beispielen
Entwicklungsumgebung
- Netbeans ist eine Plattformübergreifende Software. Sie findet sich z.B. auch im Repository von Ubuntu.
- Eine Einführung in Maven 2 findet sich auf JavaWorld.com. Maven 2 ist auch in Netbeans integriert.
JUnit-Tests
- Auf JUnit.org finden sich auch die Java-API-Docs.
- http://stackoverflow.com/questions/309396/java-how-to-test-methods-that-call-system-exit
- Neben JUnit ist jMock ein großer Helfer beim schreiben von automatischen Tests. Eine Alternative, um "gefälschte" Java-Objekte zu nutzen, ist EasyMock.
Kommandozeilenparser
- picocli ist eine Bibliothek zum Parsen der Kommandozeile mit vielen Funktionen, u.a. integrierter Tab-Completion
- JewelCLI ist ein OptionsParser, der auf Annotationen setzt.
- Commons CLI ist eine Apache-Komponente, die die Verarbeitung von Kommandozeilenparametern erleichtert.
- JOpt-Simple
Webanwendungen
- Siehe Apache Cocoon
- HTML kann man mit deskriptivem Java-Code erzeugen: Dafür steht Apache ECS zur Verfügung.
- Die Übersetzung von Java nach JavaScript leistet das Google Web Toolkit.
- Anleitung zur Nutzung des Google Web Toolkit mit der Netbeans-IDE.
Simple HTTP-Server
Das JDK kommt bereits mit einem eingebauten einfachen HTTP-Server:
- https://javadoc.scijava.org/Java13/jdk.httpserver/com/sun/net/httpserver/package-summary.html
- https://javadoc.scijava.org/Java13/jdk.httpserver/com/sun/net/httpserver/spi/HttpServerProvider.html
- https://dzone.com/articles/simple-http-server-in-java
- https://gist.github.com/gitawego/14e15456e4d36a26aac7695648565329
- https://www.logicbig.com/tutorials/core-java-tutorial/http-server/http-server-basic.html
Noch mehr Basic ist die Programmierung auf den IO-Sockets:
Vaadin
Auf dem Google Web Toolkit basiert auch das serverseitige Webapplikationsframework Vaadin. Auch hier wird serverseitig Java geschrieben, jedoch auf dem Browser als Javascript ausgeführt.
Siehe
- https://www.heise.de/developer/artikel/Einfuehrung-in-die-Entwicklung-mit-Vaadin-Teil-1-3594394.html?seite=all
- Überblick über Vaadin auf developer.ibm.com mit Nachweisen zu IDEs (Netbeans und Eclipse)
- Getting Started auf dzone, geschrieben von Vaadin-Mitarbeitern
sparkjava
Sparkjava ist ein Micro-Framework, um ähnlich einer funktionalen Herangehensweise wie in Node.js Anfragen von Web-Clients zu bedienen.
Siehe
- https://sparktutorials.github.io/2016/06/10/spark-basic-structure.html
- https://zeroturnaround.com/rebellabs/sparkjava-is-an-amazing-java-web-framework-do-you-really-need-it/
JavaLite ActiveWeb
Siehe http://javalite.io/activeweb
molecule
Molecule ist ein kleines Framework für Java, das einen Java-Webserver (Simple oder Undertow) integriert und ähnlich wie Express für Node.js-Anwendungen zu benutzen ist.
Siehe
Dateiverwaltung
Das Erstellen von Windows-Verknüpfungen ist nicht mit Bord-Mitteln von Java zu lösen. Aber es gibt schon fertigen Code im Web. "JShortCut" soll auch helfen.
Java WebStart
Web Services
- Einführung in Web Service Nutzung (Java-unabhängig)
- Java Web Services 1.6 Dokumentation
Datenformate
JSON
- org.json or JSON-java
- Json.Simple, Java Library to convert from and to JSON
- Siehe auch JSONTools
- JSON unter Android
- Jackson
MS-Excel
Dateien im Excel-Format können mit Hilfe der Open Source-APIs
- jExcelAPI und
- Apache POI (auch für das 2007er-XML-Format)
- Siehe zu Apache POI die Anleitung zum Lesen von Excel-Dateien in Java
gelesen und geschrieben werden.
OpenDocument Format (ODF)
Für das Open Document Format, das v.a. durch OpenOffice/LibreOffice bekannt ist, existiert die Simple API des ODFToolkits.
Http Push Technology / Long Polling
Siehe
Java Bericht Generator
Allgemeines
Für die Erstellung von Berichten (Reports aus Datenbanken) gibt es unterschiedliche Open Source-Produkte:
- mit graphischem Designer iReport Designer
- DataVision, feature-reich, mit JRuby und anderer Scripting-Unterstützung, liest Datenbanken, Excel und Textdateien, allerdings schon seit 2009 wohl keine Fortentwicklung
- Pentaho Reporting
- Nachfolger von JFreeReport[1]
- BIRT, integriert in Eclipse
- xTuple OpenRPT, Report Generator für PDF
BIRT
https://eclipse.github.io/birt-website/docs/what-is-birt
JasperReports
JasperReports ist wohl der Platzhirsch unter den Open Source - Berichtsgeneratoren für Java.
Siehe auch
Inversion of Control/Dependency Injection
Theorie und Anleitungen
- Inversion of Control ist ein Name für das Konzept von Container-Frameworks, die Software-Komponenten verbinden, ohne dass ein Eingriff in deren Sourcecode vorgenommen werden muss. Dies ist eine Methode, Plugins zu schaffen.
- Die Theorie von Inversion of Control (englisch) von Martin Fowler bietet einen Vergleich von Inversion of Control mit dem Service Locator Pattern.
- Eine weitere Anleitung zu Inversion of Control erstellt einen einfachen IoC-Container "BeanFactory".
Einzelne IoC-Container-Frameworks
- PicoContainer und seine Weiterentwicklung NanoContainer beherrschen Constructor Injection und Setter Injection. Außerdem bieten Sie Konfiguration durch Annotations.
- Spring beherrscht Setter Injection. Beim Spring Framework ist Inversion of Control nur einer von vielen Features.
- Die Nachfolger von Avalon bieten Interface Injection.
- Excalibur ist ein Nachfolgeprojekt Avalons unter dem Dach von Apache.
- DPML Metro ging aus Avalon hervor.
- HiveMind befindet sich derzeit im Übergang auf Version 2 (noch alpha-Version).
- Eine Liste von OpenSource IoC-Containern findet sich bei java-source.net.
FTP Client API
- Artikel über Java FTP Client APIs einschließlich in J2SE vorhandenem Standard
Statistik
Synchronisation
Siehe auch Synchronisation unter Linux
SyncML
vCard/vCalendar/iCal
- vCard/vCalendar home - http://www.imc.org/pdi/
- Open Source iCal4J-API
Bluetooth
Siehe Bluetooth-Tipps.
Java als HTTP-Client
- Standard-Java URL-Klasse
- Gegenüberstellung von Standard-HttpURLConnection und Apache-HttpClient
- Sun Tutorial für eine HTTP-Query
- Java als Controller für Firefox mittels JavaXPCOM
- Eine ganz andere Lösung ist das Selenium - Framework zur Steuerung eines Browsers.
- Wenn man Javascript deaktivieren will, hilft bei Nutzung von Firefox diese Lösung.
Aufruf des Standard-Browsers
Mit java.awt.Desktop
kann der Standardbrowser des Betriebssystems aufgerufen werden.[2]
Unter Windows können für bestimmte URLs auch eigene Anwendungen registriert werden (siehe Windows#Aufruf von Programmen mit URLs). Dann können mit der java.awt.Desktop
-Methode auch andere Programme als der Browser gestartet werden.
Databases
JDBC
- Ein Überblick über JDBC/SQL findet sich auf java.sun.com.
- Mit NetBeans-IDE auf Datenbanken zugreifen
Query-Builder
Um die Tippfehler von SQL-Queries in Java-Code zu reduzieren, gibt es leicht- oder schwergewichtige Query-Builder, bei denen die SQL-Sprachkonstrukte in Java-Methoden oder -Eigenschaften abgebildet werden. Vertreter sind z.B.
- jOOQ - mächtig, unterstützt auch SQL-Dialekte der einzelnen Datenbanken, kostenlos (nur) für Open Source Datenbanken
- OpenHMS SqlBuilder - leichtgewichtiger Query-Builder
- QueryDSL
- MyBatis
- Apache Calcite SqlBuilder class - Low level SQL-Query-Unterstützung
Siehe auch Apache Calcite - ein Datenbank-Adapter
Object Relational Mapper
Es gibt schwergewichtige Zwischenschichten, die SQL-Datensätze auf Java-Objekte spiegeln. Siehe z.B.
SQL
Java Persistence API
- Java Persistence API at Javasoft
- Java Persistence API Doc
- Folien zur Einführung in JPA
- MiniBeispiel einer Java-Persistence-API mit J2SE
- Addressbuch mit Java Persistence API, Hibernate und HSQLDB
- Glassfish-Example (JavaSE mit/ohne Netbeans oder JavaEE]
XML
- XStream (ein XML-Persistence-Library]
Mit der Open Source-Bibliothek itext lassen sich PDF nicht nur erstellen, sondern auch z.B. als reiner Text lesen.
Geometrie
- Flächenberechnung von Polygonen:
- Bilden von Schnittmengen von Polygonen:
- JTS Topology Suite ist eine Open Source Bibliothek, die auch das Verschneiden von Polygonen unterstützt.
- http://www.integis.ch/documents/ISem_Opprecht_Overlay_2002-02-28.pdf
- Übrigens: Flächen eines Polygons kann man auch mechanisch mit einem Planimeter messen.
Java Swing
Die GUI-Bibliothek Swing wird wohl nicht mehr weiterentwickelt.
JLayeredPane
Für die Nutzung von JLayeredPane hilft wohl ein spezialisierter LayoutManager.
Java 3D
- Eine kleine Anleitung mit Kurzbeispielen zu Java 3D findet sich hier.
- Einen Überblick über Java 3D verschafft [1].
Hardware-I/O
Für den Universal Serial Bus (USB) ist die Unterstützung durch Java nur für Linux vollständig:
- Javax.USB als Standardimplementation des JSR80.
Neuronale Netze
- Siehe Neuronale Netze.
Scripting
- Für JavaFX gibt es eine Anleitung für Java-Programmierer.
Java 2 Mobile Edition
Siehe J2ME
Java Servlets
Java Servlets benötigen eine Ausführungsumgebung wie Apache Tomcat.
Java-Einstieg
- Installation von
- JRE / JDK
- Netbeans
- Hello-World-Programm auf Konsole
- Ausgabe einer
for
-Schleife if
-Anweisung- Debuggen: Schritt-für-Schritt-Ablauf plus Variablen-Überwachung
- Ausgabe in eine Text-Datei / CSV-Datei
- Variante: Schreiben über Funktionen
- Variante: Schreiben über Klassenobjekte
- Ausgabe einer
- Swing
- Hello-World-Programm auf GUI
- Addition bei Drücken eines Knopfes
- Bearbeiten von Excel-Dateien mit Apache POI
Siehe auch Softwareentwicklung