Java-Tipps: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 4: Zeile 4:
 
=== Installation ===
 
=== Installation ===
  
 +
==== auf einem Raspberry Pi ====
 +
 +
Zur Installation von Oracle Java 8 JDK auf einem [[Raspberry Pi]] siehe
 +
* http://www.gridtec.at/java-8-auf-dem-raspberry-pi-installieren-und-testen/
 +
 +
==== aus dem webupd8team-Repository ====
 
   sudo add-apt-repository ppa:webupd8team/java
 
   sudo add-apt-repository ppa:webupd8team/java
 
   sudo aptitude update && sudo aptitude install oracle-java8-installer
 
   sudo aptitude update && sudo aptitude install oracle-java8-installer
Zeile 10: Zeile 16:
 
* [http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html Installationsanleitung mit PPA für Linux Mint 17.1]
 
* [http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html Installationsanleitung mit PPA für Linux Mint 17.1]
 
* [http://neurobin.github.io/OracleJDKInstaller/ Script zum Installieren] (ungeprüft)
 
* [http://neurobin.github.io/OracleJDKInstaller/ Script zum Installieren] (ungeprüft)
 
  
 
=== Java-Sprachkonstrukte ===
 
=== Java-Sprachkonstrukte ===
Zeile 23: 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 49: 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.sourceforge.net/index.html JOpt Simple]
+
* [http://jopt-simple.github.io/jopt-simple/examples.html JOpt-Simple]
  
 
=== Webanwendungen ===
 
=== Webanwendungen ===
Zeile 58: 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.
* Auf dem Google Web Toolkit basiert auch das serverseitige Webapplikationsframework [https://vaadin.com/docs/ Vaadin]. Auch hier wird serverseitig Java geschrieben, jedoch auf dem Browser als Javascript ausgeführt.
+
 
 +
==== 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 ====
 +
 
 +
Auf dem Google Web Toolkit basiert auch das serverseitige Webapplikationsframework [https://vaadin.com/docs/ 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
 +
* [https://developer.ibm.com/dwblog/2017/what-is-vaadin-java-web-applications/ Überblick über Vaadin auf developer.ibm.com mit Nachweisen zu IDEs (Netbeans und Eclipse)]
 +
* [https://dzone.com/refcardz/getting-started-vaadin Getting Started auf dzone], geschrieben von Vaadin-Mitarbeitern
 +
 
 +
==== sparkjava ====
 +
 
 +
[https://sparkjava.com 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 ====
 +
[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 76: 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 86: 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 111: 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 172: Zeile 234:
 
* Eine ganz andere Lösung ist das [[Selenium]] - Framework zur Steuerung eines Browsers.
 
* Eine ganz andere Lösung ist das [[Selenium]] - Framework zur Steuerung eines Browsers.
 
** Wenn man Javascript deaktivieren will, hilft bei Nutzung von [[Firefox]] [http://stackoverflow.com/questions/1285917/how-to-disable-javascript-when-using-selenium diese Lösung].
 
** Wenn man Javascript deaktivieren will, hilft bei Nutzung von [[Firefox]] [http://stackoverflow.com/questions/1285917/how-to-disable-javascript-when-using-selenium diese Lösung].
 +
 +
=== Aufruf des Standard-Browsers ===
 +
 +
Mit <code>java.awt.Desktop</code> kann der Standardbrowser des Betriebssystems aufgerufen werden.<ref>Siehe http://openbook.rheinwerk-verlag.de/javainsel/javainsel_11_008.html#dodtpe70eade2-b4f8-477e-9f46-1e4f09d87aba .</ref>
 +
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 <code>java.awt.Desktop</code>-Methode auch andere Programme als der Browser gestartet werden.
  
 
=== Databases ===
 
=== Databases ===
Zeile 178: 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 ====
Zeile 191: Zeile 275:
 
* [http://today.java.net/pub/a/today/2006/05/23/ejb3-persistence-api-for-client-side-developer.html Addressbuch mit Java Persistence API, Hibernate und HSQLDB]
 
* [http://today.java.net/pub/a/today/2006/05/23/ejb3-persistence-api-for-client-side-developer.html Addressbuch mit Java Persistence API, Hibernate und HSQLDB]
 
* [https://glassfish.dev.java.net/javaee5/persistence/persistence-example.html Glassfish-Example] (JavaSE mit/ohne Netbeans oder JavaEE]
 
* [https://glassfish.dev.java.net/javaee5/persistence/persistence-example.html Glassfish-Example] (JavaSE mit/ohne Netbeans oder JavaEE]
 +
 +
* [https://www.thoughts-on-java.org/hibernate-best-practices/ JPA Hibernate Best Practices]
  
 
=== XML ===
 
=== XML ===

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

Entwicklungsumgebung


JUnit-Tests


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

Simple HTTP-Server

Das JDK kommt bereits mit einem eingebauten einfachen HTTP-Server:

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

sparkjava

Sparkjava ist ein Micro-Framework, um ähnlich einer funktionalen Herangehensweise wie in Node.js Anfragen von Web-Clients zu bedienen.

Siehe

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

Datenformate

JSON

MS-Excel

Dateien im Excel-Format können mit Hilfe der Open Source-APIs

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:


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

Statistik

Synchronisation

Siehe auch Synchronisation unter Linux


SyncML

vCard/vCalendar/iCal


Bluetooth

Siehe Bluetooth-Tipps.


Java als HTTP-Client

  • Eine ganz andere Lösung ist das Selenium - Framework zur Steuerung eines Browsers.

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


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.

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

XML

  • XStream (ein XML-Persistence-Library]

PDF

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:

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

Scripting

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
  • Swing
    • Hello-World-Programm auf GUI
    • Addition bei Drücken eines Knopfes


Siehe auch Softwareentwicklung