Java - Framework   Frame4J
Albrecht Weinert

Laboratory for Media and versatile Applications

go to Frame4J @ AI2T Project   Frame4J   —   a Java framework.

Frame4J is a powerful infrastructure to build upon
  • standalone and distributed
  • applications and tools,
  • web-applications as
  • Applets, WebStart, Servlets.
Applications build professionally upon Frame4J are
  • comfortable,
  • (inter) nationalisable ,
  • robust and reliable,
  • and hence usable in critical infrastructures,
  • and used so in 24h*7d process control applications.
  • And Frame4J comes with a bundle of ready made tools for the developer's and the web, domain and repository admin's daily work.
[ documentation | source archive (rev...) | source repository | binaries, resources | install | tools ]

As mentioned Frame4J is an open source project. Project owner is Albrecht Weinert.   Co-workers are welcome — take part.
SVN users may read/checkout as "guest/guest".

Status / history

August 2016: A major rework started to a) exploit more Java8 features and improvements and b) to reduce Frame4J's size and prepare it for Java9 modularisation. The first and most obvious change is the removal of its time and date types
  • ConstTime, Time, TimeRO and TimeST
from package de.frame4j.util. They were, of course, much more than a replacement for the horrible java.util time types, but now most of their benefits were taken to Java8's java.time package. Frame4J's better parsing and formatting (with PHP like format symbols) were kept. Now, de.frame4j.util.TimeHelper helps Java8 time, too.
r165 is the youngest version before this conversion.
All (but two) deprecated classes were removed.

February 2016: On February 4th, as root CA, German Telekom revoked next level DFN certificate PCA Global - G01, serial number 9912441563214940059. It would otherwise be valid until July 2019 — and its direct or indirect signatures even beyond that date.
A revocation immediately invalidates all that.
Two levels deeper Albrecht Weinert's certificate and all signed with it is affected. Especially this concerns Frame4J below revision 146.
Revision 147, February 26th 2016, Implementation-Version: 1.11.02, has been signed with a certificate based on valid ones.

Warning: Former versions will probably be good at local installations; r145 is the youngest version with the revocated certificate. r<=145 will almost certainly fail in the context of JNLP, WebStart and the like.
You would see a Certificate has been revoked, revocation date: Thu Feb 04 13:47:35 CET 2016, authority: CN=Deutsche Telekom Root CA 2 ...

Spring 2015: Java8_0_40 deprecates installed extensions. Oracle announces to incompatibly drop them with Java9.
As of November 2015 no real, i.e. working, robust and testable, migrating recipe has been presented.
"Make a module and bundle the libraries with the [one] application" won't do. Frame4J is a framework + some 15 applications which are available by just having Frame4J installed. Those tools are widely used on own and customers servers for automated processes, for example in SVN hooks, since years.
Breaking this "Java standard deployment procedure" (since Java1.2, 1998) will hit Frame4J and many other projects.
In the end we will have to climb on the jiggsaw / modularisation bandwagon as soon as Java 9 is well established.

November 2014 we started with using Java8 only for translating and deploying. The step to Java8 only came 2015. That includes the using Java8 features and starting to reduce those parts of Frame4J motivated by pre8 bugs — like time, calendar and more.

November 2012 all Tomcat / Catalina related classes were removed. It was in the end impractical to bridge Tomcat's code breaking changes in one deployment. Many older Tomcat servers run on with a suitably old frame4j.jar.

February 2010: Oracle announced Kenai's shutdown and Frame4J moved to AI2T (SVN repo. For just read/checkout guest/guest is sufficient).

March 2009 saw the first successful port of a long run automation (process control) application from the predecessor "aweinertbib" to Frame4J.

November 2008: Frame4J is open source and one of the very first projects at SUN's open software platform K≡nai. The software is open but the platform was not. A tight submission process had to be undergone to get a project. But, alas, ... see February 2010 above.

Frame4J — Aims, Strategies
  • Frame4J is developed on base of the approved predecessor. Both did and do run control / server applications trouble-free over many years in uninterrupted 24h7d.
    Hence backward compatibility is important for Frame4J and Java. Notwithstanding the following breaking changes were made:
    • English only (javaDoc, comments, names) instead of German (except for one banking package used for online transactions available in German speaking countries only)
    • base package mainly de.frame4j (instead of de.a_weinert)
    • using Java6 (/5) features
      (with no return to Java2 or lower, avoiding the predecessor's 1.3 backward compatibility burden)
    • using Java8 features since 2015 (with no return ...) and in consequence
    • starting some incompatible conversion, also with respect to the necessities of Java9's modularisation and killing of installed extensions — Frame4J's deployment mode so far.
    For major and minor incompatible breaks, the last revision before will be kept some years for comfortable download.
  • Frame4J shall be to a large degree JUnit tested / test driven
  • Frame4J conforms to good design rules and the "Guideline for the usage of OO programming in critical systems", (that may later be made part of project)

The sub-projects
  • Frame4J — the Java framework
    • porting, streamlining core classes and tools
      (de.a_weinert.. -> de.frame4j..; done)
    • translating existing javaDoc etc. German -> English (done)
    • checking / improving the translation (ongoing process)
    • adding / completing JUnit tests (40%; ongoing)
    • algorithmic and performance / real time improvements (80 %)
  • Predecessor
    • reduce to a (less than) half size Frame4J based rest (done; but recurrent in case of substantial Frame4J changes)
    • adapt some special (legacy) applications, where porting of the supporting classes makes no sense, to it (done; see above)
  • Guideline for the usage of OO programming in critical systems
    • structure of guideline (60%)
    • guide on the safe and robust use of Java's (OO) features
    • guide on the safe and robust use of patterns
    • style guide part
    • make this an own project without the (loose) couplings to Frame4J
Copyright     2010, 2016  Albrecht Weinert
Revision: 11.08.2016 (V.485)       A. Weinert,   E-Mail (webmaster)