====== [hemmerling] Java & Java Platform Languages 3/4 - The Java Language, Java Frameworks & Java APIs ====== Related page: *[[java.html|Java & Java Platform Languages 1/5]]. *[[java02.html|Java & Java Platform Languages 2/5 - Literature, Training & Certification]]. *[[java04.html|Java & Java Platform Languages 4/5 - Java on Embedded Systems & Machine-Specific APIs]]. *[[java05.html|Java & Java Platform Languages 5/5 - Java IDEs and other Java Development Tools]]. *[[functional.html|Functional Programming]]. ===== The Java Language and the JDK ===== ==== Annotations ==== *[[http://en.wikipedia.org/wiki/Java_annotation|EN.Wikipedia "Java annotation"]], [[http://de.wikipedia.org/wiki/Annotation_(Java)|DE.Wikipedia "Annotation (Java)"]]. ==== Java 8 ==== *See [[functional.html|Functional Programming]]. ==== Java 9 ==== *"Rabea Gransberger". *[[http://www.speakerdeck.com/rgra|SpeakerDeck "Rabea Gransberger"]]. *[[http://speakerdeck.com/rgra/restrukturierung-der-code-basis-mit-java-9-hh|SpeakerDeck "Rabea Gransberger" - "Restrukturierung der Code-Basis mit Java 9 (HH)"]]. *[[http://rgra.github.io/|GitHub.IO "Rabea Gransberger (rgra)"]]. *[[http://www.github.com/rgra|GitHub "Rabea Gransberger (rgra)"]]. *[[http://www.github.com/rgra/java9-module-refactoring|GitHub "rgra/java9-module-refactoring"]]. *[[http://shop.heise.de/katalog/ix-developer-java-2017|Heise Shop "iX Developer – Java 2017 Was Java-Entwickler wissen müssen!"]] with an article of "Rabea Gransberger" about Java9. *[[http://www.github.com/gunnarmorling|GitHub "Gunnar Morling"]]. *[[http://www.github.com/gunnarmorling/jdkapidiff|GitHub "gunnarmorling/jdkapidiff"]] - "Java 8 - 9 API Diff Report Generator". *[[http://de.slideshare.net/SimonRitter|SlideShare "Simon Ritter"]]. *[[http://de.slideshare.net/SimonRitter/jdk-9-55-new-features|SlideShare "Simon Ritter" - "JDK 9: 55 New Features"]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/1491954167/hemmerling-21|Sander Mak, Paul Bakker "Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications"]]. *Book [[http://www.manning.com/books/the-java-module-system|Nicolai Parlog "The Java Module System"]]. *There will be no 32-bit JDKs and JREs for Java 9, by Oracle :-(. *2 different directory structures: *Version 1, suggested by Oracle: *src. *module1. *module2. *Version 2, suggested by software developer who want to offer a software with different modules for each customer: *module1. *src. *module2. *src. ==== Java 11 ==== ==== MAP, Hash Map, Dictionary ==== === API === *[[http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html|Oracle "Java Platform, Standard Edition 7 API Specification" - "Class Dictionary"]] - "This class is obsolete. New implementations should implement the Map interface, rather than extending this class". === Literature === *[[http://openbook.rheinwerk-verlag.de/javainsel/javainsel_13_004.html|Rheinwerk Computing, Christian Ullenboom "Java ist auch eine Insel"]] - "13.4.1 Die Klassen HashMap und TreeMap". === Resources === *[[http://www.gamedev.net/topic/162718-hashmap-map-dictionary-whats-the-difference/|gamedev.net "HashMap, Map, Dictionary, what's the difference?"]]. *[[http://examples.javacodegeeks.com/java-basics/data-types/java-dictionary-example/|Java Code Geeks "Java Dictionary example"]]. *[[http://www.coderanch.com/t/581116/java/java/Map-Dictionary|JavaRanch "Map Vs Dictionary"]]. *[[http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html|Oracle "Java Platform, Standard Edition 7 API Specification" - "Class Dictionary"]] - "This class is obsolete. New implementations should implement the Map interface, rather than extending this class". *[[http://schabby.de/hashmap/|Schabby's Blog "Java HashMap"]]. *Stack Overflow. *[[http://www.stackoverflow.com/questions/267312/difference-between-a-hashmap-and-a-dictionary-adt|Stack Overflow "Difference between a HashMap and a dictionary ADT"]]. *[[http://www.stackoverflow.com/questions/2884068/what-is-the-difference-between-a-map-and-a-dictionary|Stack Overflow "What is the difference between a Map and a Dictionary?"]]. *[[http://www.technofundo.com/tech/java/equalhash.html|Technofundo "Equals and Hash Code"]] -> If you override the "equals()" and "hashcode()" functions of a class, you can manage that the comparison of 2 objects of the same class, though different objects, becomes "true". *[[http://blog.udemy.com/java-dictionary/|Udemy Blog "Understanding the Java Dictionary Class"]]. ==== The JDK ==== *Selection of the active Java runtime / JDK for Windows, by the registry entry: key = "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit/Current Version", value="1.3". ==== Communications with Java ==== *[[http://en.wikipedia.org/wiki/Java_Message_Service|EN.Wikipedia "Java Message Service"]], [[http://de.wikipedia.org/wiki/Java_Message_Service|DE.Wikipedia "Java Message Service"]] ( JMS ). *[[http://www.torsten-horn.de/|Torsten Horn]]. *[[http://www.torsten-horn.de/techdocs/|Torsten Horn - TechDocs]]. *[[http://www.torsten-horn.de/techdocs/jee-jms.htm|Torsten Horn "JMS (Java Message Service)"]]. *[[http://en.wikipedia.org/wiki/Java_remote_method_invocation|EN.Wikipedia "Java remote method invocation"]], [[http://de.wikipedia.org/wiki/Remote_Method_Invocation|DE.Wikipedia "Remote Method Invocation"]] ( Java RMI ). === PDF Generation === *[[http://www.itextpdf.com/|iText]] - "Easy PDF generation and manipulation for Java and .NET developers". *[[http://www.github.com/itext|GitHub "iText"]] for Java. *[[http://www.github.com/itext/itextsharp|GitHub "itext/itextsharp"]] for C#, .NET. ==== Reflection ==== *Rafael Winterhalter ( [[http://www.linkedin.com/in/rafaelwth|LinkedIn "Rafael Winterhalter"]], [[http://www.github.com/raphw|GitHub "raphw"]], [[http://www.bytebuddy.net/|Byte Buddy]] ) - "Reflections are neither type safety, nor a notion of failfast" :-). *[[http://en.wikipedia.org/wiki/Reflection_%28computer_programming%29|EN.Wikipedia "Reflection (computer programming)"]], [[http://de.wikipedia.org/wiki/Reflexion_%28Programmierung%29|DE.Wikipedia "Reflexion (Programmierung)]]. ==== Execution of "System.console()" in IDEs ==== *[[http://illegalargumentexception.blogspot.de/2010/09/java-systemconsole-ides-and-testing.html|Illegal Argument Exception. Miscellaneous Computer Code "Java: System.console(), IDEs and testing"]] #. *"The method System.console() can return null if there is no console device present. This comes as a surprise to people when they run their code in an IDE". *"People managed to get data to and from the console before Java 6 came along", but obviously now with Java 6, 7, 8... not anymore :-(. ==== Concurrency, Thread Safety ==== *[[http://www.javaspecialists.eu/|Heinz Kabutz, JavaSpecialists.eu]]. *[[http://www.github.com/Kabutz/|GitHub "kabutz"]]. *[[http://www.github.com/Kabutz/https://github.com/kabutz/modern-synchronizers|GitHub "kabutz/modern-synchronizers"]]. *I joined the speech "Thread Safety with Phaser, StampedLock and VarHandle" by [[http://www.xing.com/profile/Heinz_Kabutz/|Heinz Kabutz]] at the regional meeting of [[http://www.jug-h.de/|Java User Group Hannover]] in Hannover, Germany. *He also told us the story about "Sifis", the crocodile of Crete ( [[http://www.google.com/search?q=sifis+crocodile|Google - Search for "sifis crocodile"]] ). *[[http://wiki.openjdk.java.net/display/CodeTools/jcstress|OpenJDK Wiki "jcstress"]] - "The Java Concurrency Stress tests (jcstress) is an experimental harness and a suite of tests to aid the research in the correctness of concurrency support in the JVM, class libraries, and hardware". *[[http://www.github.com/jwoschitz/jcstress-examples|GitHub "jwoschitz/jcstress-examples"]] - "Examples for Java Concurrency Stress (jcstress) tests with gradle integration". *[[http://www.oreilly.com/library/view/openjdk-cookbook/9781849698405/ch09s09.html|O'Reilly Safari "OpenJDK Cookbook by Stanislav Kobylyanskiy, Alexey Mironchenko, Alex Kasko" - "Building and running jcstress"]]. ===== J2EE / Java EE / Eclipse "EE for J" ===== ==== Java EE Platform Specification - The Framework ==== === GitHub "Java EE" === *[[http://javaee.github.io/|GitHub.io "Java EE - Migrated Projects"]]. *[[http://javaee.github.io/other-migrated-projects.html|GitHub.io "Java EE - Other Migrated Java.net Projects"]]. === Java.net === *[[http://web.archive.org/web/*/www.java.net|Archive.org "Java.net"]], [[http://community.oracle.com/community/java|Oracle "Java.net"]] ( - 2017-05-27 ). *[[http://www.java.net/|Java.net]], [[http://www.oracle.com/splash/java.net/maintenance/|Oracle "Java.net"]] - "We're sorry the java.net site has closed. Most Open Source projects previously hosted on java.net have been relocated". === Oracle === *[[http://www.oracle.com/technetwork/java/javaee/|Oracle Technology Network "Java Platform, Enterprise Edition (Java EE)"]]. *[[http://www.oracle.com/technetwork/java/javaee/tech/javaee6technologies-1955512.html|Oracle Technology Network "Java EE 6 Technologies"]] - "Download spec". ==== Application Servers ==== === Apache Tomcat - A Web Container only === == The Tool === *[[http://www.apache.org/|Apache]]. *[[http://jakarta.apache.org/|The Apache Jakarta Project]]. *[[http://tomcat.apache.org/|Apache Tomcat]]. == Resources === *Port. *By starting by batchfile, Tomcat is at [[http://localhost:8080/|http://localhost:8080/]]. *By starting by Netbeans IDE, Tomcat is at [[http://localhost:8084|http://localhost:8084/]]. So that you may run both Glassfish and Tomcat by Netbeans IDE, concurrently. *If Apache Tomcat does not start by the error message "The specified module could not be found", "Das angegebene Modul wurde nicht gefunden", found in "C:\Program Files\Apache Software Foundation\Tomcat 6.0\logs/jakarta_service_20101109.log" ( 20101109 is a coding of the date 2010-11-09 ), please fix the problem with the following instructions: *[[http://www.trackplus.com/forum/posts/list/800.page|track+ forum, subforum "Traps and Pitfalls", threat "missing dll"]] - "msvcr71.dll must be installed either in windows\system32 or within the Tomcat bin directory (latter preferred). This seems to be not a Tomcat problem, but a Sun installer problem". *[[http://www.mkyong.com/tomcat/tomcat-error-prunsrvc-failed-creating-java-jvmdll/|Mkyong "Tomcat Error – prunsrv.c Failed creating java (jvm.dll)"]] - "Copy msvcr71.dll from java’s bin directory to tomcat’s bin folder", "Copy msvcr71.dll from java’s bin directory to windows\system32 folder". *[[http://cse.csusb.edu/turner/java_web_programming/tomcat/|David Turner "Java Web Programming with Eclipse" / "The Apache Tomcat Web Container"]]. *If you start Tomcat by the Netbeans IDE, the base directory "Catalina Base" is at "Servers / Apache Tomcat / Connection / Catalina Base" as read only operating system directory path. *On Windows, you may copy + paste this path, e.g. "C:\Users\Administrator\AppData\Roaming\NetBeans\8.2\apache-tomcat-8.0.27.0_base". *Then you may create a directory shortcut on the desktop or create an MSIE bookmark from the directory level above ( e.g. from ":\Users\Administrator\AppData\Roaming\NetBeans\8.2" ), so that you may open the location by a single click. *"C:\Users\Administrator\AppData\Roaming\NetBeans\8.2\apache-tomcat-8.0.27.0_base\work\Catalina\localhost" is then the server cache directory. *Tomcat requires the ( empty ) directory "/web/WEB-INF". By default, Git / GitHub doesn´t store empty directories. So please put a dummy file into the WEB-INF directory to force the storage on the GitHub cloud service. *After download a JavaEE6 project from GitHub into Netbeans IDE, I got the error message "Problem: The project uses the file/folder called "src-java", but this file/folder was not found. Solution: Click Resolve and locate the missing file/folder" *The server cache is at "\work\Catalina\", e.g. "C:\Program Files\Tomcat8\work\Catalina\localhost". *[[http://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html|Apache Tomcat "Realm Configuration HOW-TO"]] - "A Realm is a 'database' of usernames and passwords that identify valid users of a web application (or set of web applications), plus an enumeration of the list of roles associated with each valid use". === Glassfish - The Java EE 7 Sample Implementation === == The Tool === *[[http://web.archive.org/web/*/www.glassfish.org|Archive.org "Glassfisch.org"]], [[http://web.archive.org/web/*/http://glassfish.java.net/|Archive.org "Glassfish.Java.net"]] ( - 2017-05-27 ). *[[http://javaee.github.io/glassfish/|GitHub.io "GlassFish"]], [[http://javaee.github.io/glassfish-corba/|GitHub.io "ORB Implementation, GlassFish-Corba"]], [[https://javaee.github.io/glassfish-samples/|GitHub.io "glassfish-samples. GlassFish Samples Project"]]. *Blog [[http://blogs.oracle.com/theaquarium|The Aquarium. News from the GlassFish Community]]. *[[http://wiki.netbeans.org/JavaEE7|Netbeans Wiki "JavaEE7"]]. *[[http://www.twitter.com/glassfish|Twitter "GlassFish, @glassfish"]]. *[[http://www.twitter.com/java_ee|Twitter "Java EE Platform, @Java_EE"]]. == Resources === *Port. *By starting by batchfile, Glassfish is at [[http://localhost:8080/|http://localhost:8080/]]. *By starting by Netbeans IDE, Glassfish is at [[http://localhost:8080/|http://localhost:8080/]]. So that you may run both Glassfish and Tomcat by Netbeans IDE, concurrently. === JBoss === *[[http://www.jboss.org/|JBoss]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/3826617975/hemmerling-21|Thomas Heute, Michael Juntao Yuan: "JBoss Seam: Enterprise-Webanwendungen mit Java EE]]. *buecherbillig.de 100% ( [[http://www.buecherbillig.de/jboss-seam-enterprisewebanwendungen-java-einfacher-leistungsstaerker-p-44913.html|Thomas Heute, Michael Juntao Yuan: "JBoss Seam: Enterprise-Webanwendungen mit Java EE"]] ). === jWebSocket === *[[http://www.jwebsocket.org/|jWebSocket]] - "The Open Source Java WebSocket Server". === Eclipse MicroProfile === *[[http://microprofile.io/|Eclipse MicroProfile]] *[[http://dzone.com/articles/microprofile-5-things-you-need-to-know|DZone "MicroProfile: 5 Things You Need to Know "]] - "MicroProfile specifies a collection of Java EE APIs and technologies which together form a core baseline microservice that aims to deliver application portability across multiple runtimes". === WildFly - Application Server for building Microservices === == Tools == *[[http://www.wildfly.org/|WildFly]]. *[[http://www.github.com/wildfly-swarm|GitHub "wildfly-swarm"]]. == Resources == *[[http://www.dzone.com/articles/wildfly-swarm-building-microservices-with-java-ee|DZone Integration "WildFly Swarm: Building Microservices with Java EE"]]. *[[http://www.thoughts-on-java.org/java-weekly-2015/|Thoughts on Java "Java Weekly 20/15: Microservice Premium, Wildfly Swarm, Hibernate OGM"]]. *[[http://blog.arungupta.me/wildfly-swarm-microservices-javaee/|Miles to go 3.0 … Arun Gupta is a technology enthusiast, avid runner, author of a best-selling book, globe trotter, a community guy, Java Champion, JavaOne Rockstar, JUG Leader, Minecraft Modder, NetBeans Dream Teamer, Devoxx4Kids-er, and a Couchbaser "WildFly Swarm: Building Microservices with Java EE"]]. *[[http://de.wikipedia.org/wiki/WildFly|EN.Wikipedia "WildFly"]], [[http://de.wikipedia.org/wiki/WildFly|DE.Wikipedia "WildFly"]]. === Some other Application Servers for Java === *[[http://www.ibm.com/software/webservers/appserv/community/|IBM "WebSphere Application Server Community Edition"]]. *[[http://www.orionserver.com/|Orion Application Server]], for Java with J2EE - free "Orion Application Server Development License". *[[http://www.oracle.com/technetwork/middleware/fusion-middleware/|Oracle Oracle Fusion Middleware]]. *[[http://en.wikipedia.org/wiki/BEA_Systems|EN.Wikipedia "BEA Systems"]], [[http://de.wikipedia.org/wiki/BEA_Systems|DE.Wikipedia "BEA Systems"]]. *[[http://planet.objectweb.org/|OW2 Consortium "JOnAS OpenSource Java EE Application Server"]] for Java. *The OpenSource application server [[http://www.caucho.com/|Caucho Technology, Inc. "Resin"]] for Java. === Resources === *How to start Glassfisch: *The default domain called 'domain1' is installed and preconfigured. *To start GlassFish, just go in the "bin" directory of the GlassFish installation is located and execute the shell command "asadmin start-domain". *To start GlassFish, execute the shell command "asadmin stop-domain". *After a few seconds, GlassFish will be up and ready to accept requests. The default 'domain1' domain is configured to listen on port 8080. In your browser, go to [[http://localhost:8080|http://localhost:8080]] to see the default landing page. *To manage GlassFish, just go to web administration console: [[http://localhost:4848|http://localhost:4848]]. *[[http://www.stackoverflow.com/questions/18045897/how-to-run-glassfish-4-on-port-80-instead-of-8080-root-acess-is-not-an-issue|StackOverflow "How to run glassfish 4 on port 80 instead of 8080. root acess is not an issue.?"]]. *Web administration console [[http://localhost:4848|http://localhost:4848]]: "Configurations / Network Config / Network Listeners". *"admin-listener" - port 4848. *"http-listener1" - port 8080 -> Click on the link "http-listener1", modify "Port" from "8080" to "80". *"http-listener2" - port 8181. *[[http://www.mitlinx.de/webservices/howto_tomcat_4_0_installieren.htm|MitLinux, Petra Haberer "HOWTO: Tomcat 4.0 installieren"]]. *[[http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition|EN.Wikipedia "Java Platform, Enterprise Edition"]], [[http://de.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition|DE.Wikipedia "Java Platform, Enterprise Edition"]]. *[[http://en.wikipedia.org/wiki/WAR_%28Sun_file_format%29|EN.Wikipedia "WAR (Sun file format)"]], [[http://de.wikipedia.org/wiki/Web_Archive|DE.Wikipedia "Web Archive"]]. ==== Dependency Injection with Java ==== === Traditional ( limited ) Dependency Injection with Java EE 6 === === Contexts and Dependency Injection ( CDI ) of Java EE 6 === *CDI is not part of the Java EE certification. *[[http://www.cdi-spec.org/|Contexts and Dependency Injection ( cdi-spec.org )]]. *[[http://java.dzone.com/articles/cdi-di-p1|DZONE Javalobby "Rick Hightower: CDI Dependency Injection - An Introductory Tutorial Part 1 - Java EE"]]. *[[http://www.jaxenter.com/tutorial-introduction-to-cdi-contexts-and-dependency-injection-for-java-ee-jsr-299-42877.html|Jaxenter "The Hollywood Principle. Tutorial - Introduction to CDI - Contexts and Dependency Injection for Java EE (JSR 299)"]]. *[[http://www.heise.de/ix/artikel/Direkteinspritzer-958569.html|Heise iX "Markus Eisele: Dependency Injection in Java EE 6. Direkteinspritzer"]]. *[[http://blog.namics.com/2011/01/cdi-leichtgewic.html|Namics Weblog "CDI: Leichtgewichtige Injection in Java EE 6"]]. *[[http://docs.oracle.com/javaee/6/tutorial/doc/giwhl.html|Oracle "The Java EE 6 Tutorial - Overview of CDI"]]. *[[http://openbook.galileocomputing.de/java7/1507_17_002.html|Christian Ullenboom "Java 7 - Mehr als eine Insel", Chapter "17.2 Wie eine Implementierung an die richtige Stelle kommt"]]. *[[http://de.wikipedia.org/wiki/Contexts_and_Dependency_Injection|DE.Wikipedia "Contexts and Dependency Injection"]]. === Resources === *[[http://en.wikipedia.org/wiki/Dependency_injection|EN.Wikipedia "Dependency injection"]], [[http://de.wikipedia.org/wiki/Dependency_injection|DE.Wikipedia "Dependency injection"]]. ==== Java Data Persistence ==== === Java Data Objects ( JDO ) === == Tools == *[[http://www.oracle.com/technetwork/java/index-jsp-135919.html|Oracle "Java Data Objects (JDO)"]]. *[[http://db.apache.org/jdo/javadoc.html|The Apache DB Project - Apache JDO]]. *[[http://www.datanucleus.org/|DataNucleus]], [[http://datanucleus.sourceforge.net/|SourceForge "DataNucleus"]], [[http://www.sourceforge.net/projects/datanucleus/|SourceForge "DataNucleus"]] - "The home for the development of the Reference Implementation of the JDO specification". == Resources == *[[http://db.apache.org/ojb/docu/tutorials/jdo-tutorial.html|The Apache DB Project "JDO Tutorial"]]. *[[http://www.datanucleus.org/products/accessplatform/guides/jdo/tutorial.html|DataNucleus Community "DataNucleus - Tutorial for JDO"]]. *[[http://www.javangelist.de/space/JDO-Mini-Tutorial|Javangelist "JDO-Mini-Tutorial"]]. *JDO Central. *[[http://db.apache.org/jdo/jdocentral.html|JDOCentral at Apache JDO]]. *[[http://wayback.archive.org/web/*/http://www.jdocentral.com/|Archive.org "JDOCentral"]] ( - 2007-03-29 ). *[[http://download.oracle.com/docs/cd/E19581-01/816-1411/816-1411.pdf|SUN "Programming Persistence. Forte for Java Programming Series"]] ( PDF ). *[[http://www.tutorial-omondo.com/jdo/index.html|Omondo "Step-by-Step Guide to create a class diagram within Eclipse 2.1. Deploy a persistent Java application using EclipseJDO and Versant JDO"]]. *[[http://www.roseindia.net/jdotutorials/|Rose India Technologies PVT, LTD. "JDO - Java Data Objects Tutorials"]]. === Jdbi === *[[http://www.jdbi.org/|Jdbi]] - "Jdbi provides convenient, idiomatic access to relational data in Java". "Jdbi is built on top of JDBC". === jOOQ === *[[http://www.jooq.org/|jOOQ]] - "jOOQ generates Java code from your database and lets you build type safe SQL queries through its fluent API". === JPA === === MyBatis === *[[http://www.mybatis.org/|MyBatis]]. *[[http://www.mybatis.org/mybatis-3/|MyBatis "Reference Documentation"]]. *[[http://www.github.com/mybatis/|GitHub "MyBatis"]]. *[[http://en.wikipedia.org/wiki/MyBatis|EN.Wikipedia "MyBatis"]],[[http://de.wikipedia.org/wiki/MyBatis|DE.Wikipedia "MyBatis"]]. === R2DBC - Reactive Programming API to relational Data Stores === *[[http://www.r2dbc.io/|R2DBC]] - An endeavor to bring a reactive programming API to relational data stores. It was first announced at SpringOne Platform 2018". *R2DBC depends on Java8 and [[http://www.reactive-streams.org/|Reactive Streams]]. *[[http://en.wikipedia.org/wiki/Reactive_Streams|EN.Wikipedia "Reactive Streams"]]. ==== Resources ==== *[[http://netbeans.org/kb/docs/javaee/javaee-gettingstarted.html|NetBeans "Getting Started with Java EE Applications"]]. *[[http://en.wikipedia.org/wiki/Java_Naming_and_Directory_Interface|EN.Wikipedia "Java Naming and Directory Interface"]], [[http://de.wikipedia.org/wiki/Java_Naming_and_Directory_Interface|DE.Wikipedia "Java Naming and Directory Interface"]]. ===== Frameworks ===== ==== General Business Application Frameworks ==== === The Oracle Application Development Framework ( ADF ) === *The free [[http://www.oracle.com/technetwork/developer-tools/adf/overview/adfessentials-1719844.html|Oracle "Oracle ADF Essentials. Faster and Simpler Java-based Application Development - Now Free"]]. *The commercial [[http://www.oracle.com/technetwork/developer-tools/adf/overview/|Oracle "Oracle Application Development Framework - Oracle ADF. Faster and Simpler Java-based Application Development"]]. *[[http://en.wikipedia.org/wiki/Oracle_Application_Development_Framework|EN.Wikipedia "Oracle Application Development Framework"]], [[http://de.wikipedia.org/wiki/Oracle_ADF|DE.Wikipedia "Oracle ADF"]]. === Spring === *[[http://www.springsource.org/|SpringSource Community]], [[http://www.github.com/SpringSource/|Github "SpringSource"]]. *[[http://www.github.com/SpringSource/rest-shell|Github "SpringSource / rest-shell"]]. *[[http://en.wikipedia.org/wiki/Spring_Framework|EN.Wikipedia "Spring Framework"]], [[http://de.wikipedia.org/wiki/Spring_%28Framework%29|DE.Wikipedia "Spring (Framework)"]]. *[[http://www.42talents.com/spring-cloud-workshop|42Talents "Spring Cloud Workshop by 42talents"]]. *[[http://start.spring.io|Spring Initializr]]. *Dependencies - Add Spring Boot Starters and dependencies to your application *Search for dependencies. *Selected Dependencies. *Spring Cloud Stream. *[[http://cloud.spring.io/spring-cloud-stream/|Spring "Spring Cloud Stream2]] - "A framework for building highly scalable event-driven microservices connected with shared messaging systems. The framework provides flexible programming model built on already established and familiar Spring idioms and best practices, including support for persistent pub/sub semantics, consumer groups, and stateful partitions". *[[http://www.baeldung.com/java-8-streams|Baelding "The Java 8 Stream API Tutorial"]]. *[[http://www.baeldung.com/spring-cloud-stream|Baelding "Introduction to Spring Cloud Stream"]]. *[[http://www.baeldung.com/java-streams|Baelding "Java Streams"]]. *Experts told me, that with "Spring Cloud Stream" you might switch between AWS and Microsoft Asure services, by changing an adaptor. ==== Graphical User Interface Frameworks ==== === Abstract Window Toolkit ( AWT ) === *[[http://en.wikipedia.org/wiki/Abstract_Window_Toolkit|EN.Wikipedia "Abstract Window Toolkit"]], [[http://de.wikipedia.org/wiki/Abstract_Window_Toolkit|DE.Wikipedia "Abstract Window Toolkit"]]. === Java Swing === *[[http://en.wikipedia.org/wiki/Swing_%28Java%29|EN.Wikipedia "Swing (Java)"]], [[http://de.wikipedia.org/wiki/Swing_%28Java%29|DE.Wikipedia "Swing (Java)"]]. === Standard Widget Toolkit === *[[http://en.wikipedia.org/wiki/Standard_Widget_Toolkit|EN.Wikipedia "Standard Widget Toolkit"]], [[http://de.wikipedia.org/wiki/Standard_Widget_Toolkit|DE.Wikipedia "Standard Widget Toolkit"]]. === JavaFX === == The Framework == *[[http://www.oracle.com/technetwork/java/javafx/downloads/index.html|Oracle "JavaFX"]]. *[[http://www.oracle.com/technetwork/java/javase/documentation/javafx-docs-2159875.html|Oracle "JavaFX Documentation"]]. *[[http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html|Oracle "Java SE 8 Archive Downloads"]] - "Java SE Development Kit 8", "Linux ARM v6/v7 Hard Float ABI", "jdk-8-linux-arm-vfp-hflt.tar.gz" is the latest edition shipped with JavaFX. *JavaFX offers "Data Binding" ( [[http://en.wikipedia.org/wiki/Data_binding|EN.Wikipedia "Data binding"]] as .NET with Windows Presentation Foundation ( WPM ). In opposite, "Java Swing" and "Java AWT" don´t offer such. *Application of "Data Binding": The GUI element offers properties, which can be linked by "Data Binding" with other properties of other GUI elements. You even may do mathematical or logical calculations to define the status of a GUI property, based on other GUI properties of other GUI elements. *Example for "Data Binding": A GUI button is active just if some text is entered in a textfield. == FXML == *Tutorial [[http://docs.oracle.com/javafx/2/fxml_get_started/jfxpub-fxml_get_started.htm|Oracle "JavaFX Documentation Home / Mastering FXML"]]. *[[http://docs.oracle.com/javase/8/javafx/fxml-tutorial/why_use_fxml.htm|Oracle "JavaFX: Mastering FXML"]] - "1 Why Use FXML". *[[http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm|Oracle "Getting Started with JavaFX"]] - "4 Using FXML to Create a User Interface". *[[http://code.makery.ch/library/javafx-8-tutorial/part1/| code.makery. Learning how to code "JavaFX 8 Tutorial - Part 1: Scene Builder"]] - "Create the FXML Layout File". *[[http://en.wikipedia.org/wiki/FXML|EN.Wikipedia "FXML"]]. == Model View ViewModel ( MVVM ) for JavaFX == *[[http://www.mvvmfx.de/|mvvmFX - The missing piece für MVVM mit JavaFX]], [[http://github.com/sialcasa/mvvmFX/|GitHub "sialcasa/mvvmFX"]] by [[http://www.lestard.eu/|Manuel Mauky]] and [[http://max-wielsch.blogspot.de/|Max Wielsch]]. *Wiki [[http://github.com/sialcasa/mvvmFX/wiki|GitHub Wiki "sialcasa/mvvmFX"]]. *MVVM is for "JavaFX", what "Model View Controller" ( MVC ) is for "Java Swing". Both are ok for object-oriented software, in general. With functional progamming, a different approach like [[https://www.flux.io/|FLUX]] would be advisable. *[[http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel|EN.Wikipedia "Model–view–viewmodel"]], [[http://de.wikipedia.org/wiki/Model_View_ViewModel|DE.Wikipedia "Model View ViewModel"]]. == ControlsFx for JavaFX == *[[ttp://www.controlsfx.org/|ControlsFX]], [[http://www.fxexperience.com/controlsfx/|FX Experience "ControlsFX"]], [[http://www.bitbucket.org/controlsfx/controlsfx/|Bitbucket "ControlsFX"]]. *Experts told me, that the "validation support" functions are suitable for MVC framework applications ( e.g. "Java Swing" ), but not for MVVM ( e.g. "JavaFX" ). *[[http://controlsfx.bitbucket.org/|Bitbucket JavaDocs "controlsfx"]]. == Java IDEs, with support to develop JavaFX applications ( as of 2015-10 ) == *Netbeans 8.02. *JavaFX Scene Builder 2.0. *e(fx)clipse. *[[http://www.eclipse.org/efxclipse/|Eclipse "e(fx)clipse. JavaFX Tooling and Runtime for Eclipse and OSGi"]]. *Oracle JDeveloper. == jpro - JavaFX in the browser == *[[http://www.jpro.io/|jpro - JavaFX in the browser - without plugins]] - "JPROjpro is a new technology which brings Java back into the browser - without Java Plugin. To achieve that, jpro runs JavaFX on the server and maps its scenegraph directly into the browser. The client side rendering is highly optimized with browser side approximations to get a smooth user experience free of lags". == Resources == *[[http://www.oracle.com/technetwork/java/javase/jdk-8u33-arm-relnotes-2406696.html|Oracle "Java Development Kit for ARM Release Notes 8 Update 33"]] - "Starting with JDK 8u33, JavaFX Embedded is removed from the ARM bundle and is not supported". === GUIs according to the Naked Objects Pattern === == Naked Objects == *The OpenSource [[http://www.nakedobjects.org/|Naked Objects]]. *The OpenSource [[http://isis.apache.org/|Apache Isis]] - "A framework for rapidly developing domain-driven apps in Java" for Java. *[[http://nakedobjects.codeplex.com/|CodePlex "Naked Objects"]] for .NET by [[http://www.nakedobjects.net/|Naked Objects Group]]. *The OpenSource [[http://www.nakedobjects.org/|Naked Objects]]. == GenGui == *The OpenSource "GenGui" by Arvato ( [[http://gengui.sourceforge.net/|SourceForge "gengui"]], [[http://www.sourceforge.net/projects/gengui/|SourceForge "gengui. Java UI framework for Naked Objects"]] ). *"GenGui for Swing". *"GenGui for HTML5". *[[http://de.linkedin.com/pub/jan-leßner/18/573/75b|LinkedIn "Jan Leßner"]], [[http://www.facebook.com/jan.lessner.1|Jan Lessner]] - Promoter and contact person for "Gen Gui". *The commercial but affordable GUI designer [[http://www.formdev.com/|FormDev "JFormDesigner"]] is needed to generate forms to be used with the "GenGui" framework. == Resources == *[[http://www.stackoverflow.com/questions/167517/naked-objects-good-or-bad|Stack Overflow "Naked Objects. Good or Bad"]]. *[[http://en.wikipedia.org/wiki/Naked_Objects|EN.Wikipedia "Naked Objects"]], [[http://de.wikipedia.org/wiki/Naked_Objects|DE.Wikipedia "Naked Objects"]]. *[[http://en.wikipedia.org/wiki/Plain_Old_Java_Object|EN.Wikipedia "Plain Old Java Object"]], [[http://de.wikipedia.org/wiki/Plain_Old_Java_Object|DE.Wikipedia "Plain Old Java Object"]]. *[[http://en.wikipedia.org/wiki/Bean_Validation|EN.Wikipedia "Bean Validation"]]. === Experts === == Experts for Java Swing & JavaFX Design, also in Metro / Flat Design Style == *[[http://www.jgoodies.com/|JGoodies - We make Java look good and work well]] by [[http://www.xing.com/profile/Karsten_Lentzsch|Karsten Lentzsch]]. *[[http://www.jgoodies.com/downloads/articles-and-presentations/|JGoodies - We make Java look good and work well "Presentations"]] *"Moderne Gestaltung für Java (JUG HH)". *"Java UI Design with Style". == Experts for JavaFX == *[[http://www.harmonic-code.org/|Gerrit Grunwald "harmonic-code.org"]], [[http://harmoniccode.blogspot.de/|Blogspot, Gerrit Grunwald - "Harmonic Code. The life of a geek that loves to code JavaFX, Swing and HTML5..."]], [[http://www.xing.com/profile/Gerrit_Grunwald|XING "Gerrit Grunwald"]], [[http://de.linkedin.com/in/harmoniccode|LinkedIn "Gerrit Grunwald"]], [[http://www.twitter.com/hansolo_|Twitter "Gerrit Grunwald, @hansolo"]]. === Resources === *MVC vs. MVP. *Experts told me that MVC ( [[http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller|EN.Wikipedia "Model–view–controller"]], [[http://de.wikipedia.org/wiki/Model_View_Controller|DE.Wikipedia "Model View Controller"]] ) is not suitable for some / all Java GUI frameworks including AWT, Java Swing, JavaFX. *Indeed, Java GUI frameworks like Java Swing or JavaFX combine behaviour ( control ) and view in a single element. *For Java GUI Frameworks like Java Swing and JavaFX, the [[http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter|EN.Wikipedia "Model–view–presenter"]], [[https://de.wikipedia.org/wiki/Model-View-Presenter|DE.Wikipedia "Model-View-Presenter"]] approach is suitable. ==== Reactive Libraries, Frameworks & APIs ==== === Project Reactor === *[[http://www.projectreactor.io/|Project Reactor]] - " Create efficient Reactive systems. Reactor is a fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification". === Reactive Streams === *[[http://www.reactive-streams.org/|Reactive Streams]]. *[[http://en.wikipedia.org/wiki/Reactive_Streams|EN.Wikipedia "Reactive Streams"]]. === RSocket === *[[http://www.rsocket.io/|RSocket]]. *[[https://en.wikipedia.org/wiki/Rsocket|EN.Wikipedia "RSocket"]]. === Spring WebFlux === *[[http://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html|Spring Documentation "Web on Reactive Stack"]]. ==== Web Frameworks ==== === JSP, a low-level Framework, optional Base for high-level Frameworks == == JSP & Servlets == *You must implement your own web framwork to build a working application, from scratch ( and not just configure an existing web framework ). *With JavaEE6 and later, the deployment descriptor "web.xml" is now optional and not mandatory anymore. *[[http://docs.oracle.com/javaee/6/api/|Oracle Docs "JavaTM Platform, Enterprise Edition 6 API Specification"]]. *[[http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html|Oracle Docs "JavaTM Platform, Enterprise Edition 6 API Specification" - "Interface HttpServletRequest"]]. *[[http://www.onjava.com/|O'Reilly ONJava.com]]. *[[http://www.onjava.com/pub/a/onjava/2003/11/19/filters.html|O'Reilly ONJava.com, Jayson Falkner "Two Servlet Filters Every Web Application Should Have"]]. *[[http://tomcat.apache.org/tomcat-7.0-doc/servletapi/|Apache Tomcat "Servlet 3.0 API - Apache Tomcat 7.0.79"]]. *[[http://tomcat.apache.org/whichversion.html|Apache Tomcat "Apache Tomcat Versions"]] - "Apache Tomcat - Which Version Do I Want?". *[[http://www.w3ii.com/de/jsp/|w3ii.com "JSP Lernprogramm"]]. *[[http://en.wikipedia.org/wiki/JavaServer_Pages|EN.Wikipedia "JavaServer Pages"]], [[http://de.wikipedia.org/wiki/JavaServer_Pages|DE.Wikipedia "JavaServer Pages"]]. *[[http://en.wikipedia.org/wiki/Java_servlet|EN.Wikipedia "JavaServer servlet"]], [[http://de.wikipedia.org/wiki/Servlet|DE.Wikipedia "Servlet"]]. *JSTL. *JavaDocs HTML documentation [[http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/|Oracle Docs "JavaServer Pages Standard Tag Library 1.1 Tag Reference"]]. *[[http://download.oracle.com/otndocs/jcp/jstl-1.1-mr2-spec-oth-JSpec/|Oracle "JavaServer Pages(TM) Standard Tag Library (JSTL) Specification 1.1 Maintenance Release"]] - Download of PDFs. *[[http://docs.oracle.com/javaee/5/tutorial/doc/bnakc.html|Oracle Docs "The Java EE 5 Tutorial / Chapter 7 - JavaServer Pages Standard Tag Library"]]. == General Resources == *[[http://en.wikipedia.org/wiki/Common_Gateway_Interface|EN.Wikipedia "Common Gateway Interface"]], [[http://de.wikipedia.org/wiki/Common_Gateway_Interface|DE.Wikipedia "Common Gateway Interface"]] - The "alternative" to Java Servlets. *[[http://en.wikipedia.org/wiki/List_of_HTTP_header_fields|EN.Wikipedia "List of HTTP header fields"]]. === JSF ==== *Experts told me, that you don´t need to know JSP, to develop and operate JSF. *JSF1 was based on JSP. JSPs was the prefered view technology for JSF1. *JSF2 is based on XHTML pages. *Experts told me, that you don´t need to know ( much ) about Java Servlets, to develop and operate JSF. With JSF, you just configure a main Java Servlet. *[[http://www.w3ii.com/de/jsf/|w3ii.com "Javaserver Faces (JSF) Tutorial"]]. *[[http://en.wikipedia.org/wiki/JavaServer_Faces|EN.Wikipedia "JavaServer Faces"]], [[http://de.wikipedia.org/wiki/JavaServer_Faces|DE.Wikipedia "JavaServer Faces"]]. === Spark ==== *[[http://www.sparkjava.com/|Spark - A tiny Sinatra inspired framework for creating web applications in Java 8 with minimal effort]], [[http://www.github.com/perwendel/spark|GitHub "perwendel/spark"]]. === Spring Web MVC ==== *[[http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html|Spring Documentation "Part VI. The Web, 22. Web MVC framework"]]. === Struts ==== *[[http://struts.apache.org/|Apache Struts]], [[http://www.github.com/apache/struts|GitHub "apache/struts"]]. *[[http://en.wikipedia.org/wiki/Apache_Struts_1|EN.Wikipedia "Apache Struts 1"]], [[http://en.wikipedia.org/wiki/Apache_Struts_2|EN.Wikipedia "Apache Struts 2"]], [[http://de.wikipedia.org/wiki/Struts|DE.Wikipedia "Struts"]]. === Tiles ==== *[[http://tiles.apache.org/|Apache Tiles]] - "Tiles grew in popularity as a component of the popular Struts framework. It was extracted from Struts and is now integrated with various frameworks, such as Spring and Struts 2". === Turbine ==== *[[http://turbine.apache.org/|Apache Turbine]] - "Web Application Framework". === Vaadin ==== *[[http://www.vaadin.com/|Vaadin]]. *[[http://www.vaadin.com/start|Vaadin "Starter Packs"]]. *[[http://www.vaadin.com/directory|Vaadin "Directory"]] - "Web UI components for everyone". *[[http://pages.vaadin.com/get-tshirt|Vaadin "Free T-Shirt for MEETUP Participants"]], "Password Required" :-). *[[http://start.spring.io|Spring Initializr]]. *Dependencies - Add Spring Boot Starters and dependencies to your application *Search for dependencies -> "Vaadin". *Selected Dependencies. *[[http://en.wikipedia.org/wiki/Vaadin|EN.Wikipedia "Vaadin"]], [[http://de.wikipedia.org/wiki/Vaadin|DE.Wikipedia "Vaadin"]] - "thinking of U and I. Vaadin is a Java framework for building modern web applications that look great, perform well and make you and your users happy". *In 2018-09, experts told me, that there will be no book ( by the Vadin crew ) about Vaadin 10 :-(. *Experts told me, that LongTimeSupport ( LTS ) is provided for Vaadin 8 and 10. The next expected LTS version will be Vaadin 15. === Wicket ==== *[[http://wicket.apache.org/|Apache Wicket]] - "Lightweight component-based web application framework". *[[http://en.wikipedia.org/wiki/Apache_Wicket|EN.Wikipedia "Apache Wicket"]], [[http://de.wikipedia.org/wiki/Apache_Wicket|DE.Wikipedia "Apache Wicket"]]. ==== Logging Frameworks ==== === Log4j 2 === *[[http://logging.apache.org/log4j/2.x/|Apache Log4j 2]]. *[[http://en.wikipedia.org/wiki/Log4j|EN.Wikipedia "Log4j"]], [[http://de.wikipedia.org/wiki/Log4j|DE.Wikipedia "Log4j"]] - "Log4Shell vulnerability" ( [[http://en.wikipedia.org/wiki/Log4Shell|EN.Wikipedia "Log4j"]], [[http://de.wikipedia.org/wiki/Log4Shell|DE.Wikipedia "Log4Shell"]] ). === Loggin Framework (JDK) === *[[http://docs.oracle.com/javase/7/docs/technotes/guides/logging/|Oracle Docs "Java Logging Technology"]]. *[[http://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html|Oracle Docs "Java Logging Overview"]]. *[[http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html|Oracle Docs "Package java.util.logging Description"]]. === Simple Logging Facade for Java (SLF4J) === *[[http://www.slf4j.org/|Simple Logging Facade for Java (SLF4J)]]. ==== Some other Frameworks ==== *[[http://www.jhotdraw.org/|JHotDraw]], [[http://jhotdraw.sourceforge.net/|SourceForge "JHotDraw"]], [[http://www.sourceforge.net/projects/jhotdraw|SourceForge "JHotDraw"]]. *SPARK. *[[http://www.sparkjava.com/|SPARK Micro Web Framework]], [[http://code.google.com/p/spark-java/|Google Code "spark-java. A sinatra inspired framework for java"]], [[http://www.github.com/perwendel/spark|Github "perwendel/spark"]] - "A Sinatra inspired micro web framework for quickly creating web applications in Java with minimal effort". *[[http://freemarker.sourceforge.net/|SourceForge "FreeMarker"]], [[http://www.sourceforge.net/projects/freemarker|SourceForge "FreeMarker"]] - "Java Template Engine Library". *OSGi. *[[http://www.osgi.org/|OSGi]]. *[[http://www.osgi.org/specifications|OSGi Specifications]]. *[[http://enroute.osgi.org/|OSGi enRoute]] - "OSGi quick start". *Blog [[http://blog.osgi.org/|OSGi Blog]]. *[[http://www.osgi.org/mail-lists|OSGi Developer Mail List]]. *[[http://www.osgi.org/newsevents|OSGi Developer Events]]. *[[http://www.osgi.org/twitter|OSGi Twitter Account]], [[http://twitter.com/OSGiAlliance|Twitter "OSGi AllianceVerified, @OSGiAlliance"]]. *[[http://www.osgi.org/linkedin|OSGi LinkedIn Account]], [[http://www.linkedin.com/groups/122461/profile|LinkedIn Group "OSGi Alliance"]]. *[[http://www.osgi.org/xing|OSGi XING Account]], [[http://www.xing.com/communities/groups/osgi-bb05-1012082|XING Group "OSGi"]]. *[[http://www.github.com/osgi/|GitHub "OSGi Alliance"]]. *[[http://www.github.com/osgi/design|GitHub "osgi/design"]] - "OSGi Alliance design repository mirror". *[[http://de.slideshare.net/OSGiUsers|SlideShare "OSGiUsers"]]. *[[http://en.wikipedia.org/wiki/OSGi|EN.Wikipedia "OSGi"]], [[http://de.wikipedia.org/wiki/OSGi|DE.Wikipedia "OSGi"]]. ==== Resources ==== *[[http://en.wikipedia.org/wiki/Java_view_technologies_and_frameworks|EN.Wikipedia "Java view technologies and frameworks"]]. ===== APIs ===== ==== Serial Communications ( RS-232, COM1: ) ==== === JavaComm 2.0 for Windows === *[[http://wind.lcs.mit.edu/download/|Networks and Mobile Systems ( NMS ) group at MIT's Computer Science and Artificial Intelligence Laboratory "Software Download and Install. Intentional Naming System (INS)"]] - "JavaComm 2.0 for Windows ( [[http://wind.lcs.mit.edu/download/java/javacomm20-win32.zip|javacomm20-win32.zip]] ). === JavaComm 3.0 for Linux, but not for Windows === *[[http://www.oracle.com/technetwork/java/index-jsp-141752.html|Oracle "Java CommunicationsAPI"]] - "Java Communications 3.0 API... available for Solaris SPARC, Solaris x86, and Linux x86". I.e. the API is not available for Windows. === RXTX === *[[http://rxtx.qbang.org/|RXTX wiki]]. *[[http://rxtx.qbang.org/wiki/index.php/Download|RXTX wiki "Download"]]. *Cloudhopper Opensource Lab / Mfizz Inc. *[[http://www.cloudhopper.com/opensource/index.html|Cloudhopper Opensource Lab "RXTX"]]. *[[http://mfizz.com/oss|Mfizz Inc. - Open source software]]. *[[http://mfizz.com/oss/rxtx-for-java|Mfizz Inc. - Open source software "RXTX for Java"]]. === jperipheral for Windows === *[[http://code.google.com/p/jperipheral/|Google Code "jperipheral. A Java library for communicating with serial ports"]] - "Supported platforms: RS-232 under Windows". === v5t11 - Java EE Application using RXTX === *[[http://www.github.com/dirkweil/v5t11|Github "dirkweil / v5t11"]]. *Speech "Java on Tracks – die Kind-im-Manne-Session" ( "Java on Tracks – the child-in-man session" ). *Speech "Java on Tracks – die Kind-im-Manne-Session" ( "Java on Tracks – the child-in-man session" ) by [[http://javaeeblog.wordpress.com/|Dirk Weil, GEDOPLAN - Unternehmensberatung und EDV-Organisation GmbH]] at the regional meeting of [[http://www.jug-ostfalen.de/|Java User Group Ostfalen]] in Braunschweig, Germany ( 2013-11-28 ). *[[http://www.gedoplan.de/jm_v5t11|GEDOPLAN GmbH "Dirk Weil im Java Magazin 8.2013: Modellbahn powered by Java EE"]], 2013-07-16. *[[http://www.slideshare.net/Javatim/java-ontracks|SlideShare "Dirk Weil: Java on Tracks – Die Kind-im-Manne-Session auf der JAX 2012"]], 2012-05-07. *With v5t11, the java communication library RXTX is directly included in the core Java application, i.e. a DLL is loaded by the Java application. *A crash or failure in serial communication library, in the native driver for the operating system or in the DLL respectively, might cause immediate freezing or crash of the whole single-task application or even the whole operating system. *By the special design ( JBOSS; JBOSS adapter for a JBOSS module which inherits RXTX ), RXTX's DLL is not loaded each time the communications API is call. With standard design, RXTX's DLL would be loaded each time the communications API is called. *In another project, a commercial project, the serial communication was therefore outsourced to another component, so that there was just loose coupling between the serial communciations and the application. === Resources === *I was told that the implementation of "JavaComm 2.0 for Windows" is buggy & instable and might cause crashes of the Windows operating system. *[[http://www.agaveblue.org/howtos/Comm_How-To.shtml|Agaveblue "Java Comm Serial API How-To for Linux"]]. *[[http://www.java.net//node/646169|Java.net Forum "Comm-API: Windows download missing"]], 2006 -> JavaComm 2.0 for Windows: "The license prohibits redistribution of the implementation. So even if you have that old release, you can't legally redistribute it". *[[http://www.coderanch.com/t/277786//java/happened-Windows-Comm-API|JavaRanch "What happened to the Windows Comm API?"]], 2006 - "Javax.comm for Windows have been EOLed". *[[http://www.vorlesungen.uni-osnabrueck.de/informatik/robot00/html/skript-18.html|Universität Osnabrück "4.1 Java Communications API"]]. *[[http://www.serialio.com/support/jspCommAPI.php|SerialIO - Your mobile solution provider on thousands of device models "javax.comm API"]]. *[[http://stackoverflow.com/questions/3959743/problem-of-using-the-javax-comm-api-on-windows-7|Stack Overflow "Problem of using the javax.comm API on windows 7"]], 2010. ==== Regular Expressions ==== *[[http://jrexxlab.karneim.com/|jrexx - automaton based regluar expression API for Java]] ( [[http://wayback.archive.org/web/*/http://jrexxlab.karneim.com/|Archive.org "jrexx - automaton based regluar expression API for Java"]] ), [[http://jrexx.sourceforge.net/|SourceForge "jrexx - automaton based regluar expression API for Java"]], [[http://www.sourceforge.net/projects/jrexx|SourceForge "rexx: automat. based regex api for Java"]]. ===== Other Programming Languages & Interpreters based on JVM and/or Java ===== *[[http://www.github.com/jwoehr/ublu|GitHub " jwoehr / ublu"]] - "Ublu Midrange and Mainframe Life Cycle Extension Language". "Ublu is an interpretive language for remote systems programming of midrange or mainframe hosts from a Java platform such as Linux, Mac, OpenBSD or Windows. It also can run natively on IBM i, IBM z/OS USS or any other reasonable Java platform including Android UserLAnd". ===== Resources ===== *[[http://en.wikipedia.org/wiki/Category:Java_APIs|EN.Wikipedia "Category:Java APIs"]], [[http://de.wikipedia.org/wiki/Kategorie:Java-Programmierschnittstelle|DE.Wikipedia "Kategorie:Java-Programmierschnittstelle"]]. ===== Appropriate OpenDirectory Directory Pages ===== *[[http://www.dmoz.org/Computers/Programming/Languages/|OpenDirectory "Top: Computers: Programming: Languages"]]. *[[http://www.dmoz.org/Computers/Programming/Languages/Java/|OpenDirectory "Top: Computers: Programming: Languages: Java"]]. {{tag>Java}}