Frame4J — the Java framework the base package.
Copyright
© 2000 - 2021, 2024
Albrecht Weinert
Frame4J is a comfortable framework for robust applications,
real world tools, a rich set of library functions and more.
It has a decades long history of successful usage in useful tools and in
server applications running 24/7, i.e permanently. One goal was and is keeping
compatibility — for long times even back to the weinertBib
(packages de.a_weinert) predecessor.
But, being a good principle, compatibility to far back cannot always hold.
Since 2015 some of the backward compatibility to < 8 was given up
- Running on Java < 8 may work but is neither checked nor supported
any more. Further development of Frame4J is free to use
all Java 8 features.
On the other hand we still rely on the extension mechanism. Hence,
all Frame4J development and standard use (from Raspberry Pi to Windows
servers) will be on Java 8. It can be run as is on Java > 9 or also
build there (tested thoroughly with 11). But going to Java 9 or beyond
is not recommended as we loose valuable features (only partly mended
by the Exec
approach.
- Content in packages
de.a_weinert
within Frame4J was dropped,
moved out or to other de.frame4j
packages in 2015. 2019
support for IO related (process control on Pi) applications
added in package de.weAut
.
- The explicit support of Servlets was dropped due to Frame4J's users
migrating from Tomcat to (pure) Apache or Node.js. Tomcat users will
miss especially the methods putting Servlet and request parameters to
PropMap
and
Prop
objects.
Revision 118 (old repo) before February 22 2015 is the last one before that
streamlining.
Since August 2016 (Revision >=177) all pre Java8 compatibility was
willfully broken, mainly by using Java 8 timing classes as far as feasible. In
preparation to Java 9 and beyond all reference to and support for Applets was
dropped.
In September 2016 we had a jump in SVN revision numbering from ~160 backwards
to ~4. (SVN server [sic!] bugs forced re-launching repositories.)
And we updated to the last non-commercial itext jars (the same as used
by Michael Schierl's jpdftweak). In between (March 2021) we dropped the use
of itext and removed the tool de.frame4j.PDFcompose — the command
line tool pdftk (C:\\util\\pdftk.exe 29.07.2013 8.890.393) is a better and
more comfortable substitute.
In June 2024 Frame4J was converted to UTF-8 form a former mix of ISO8859-1 and
"code pages" like 850 for sake of Windows. Next time we will try to add
modules in a Java8 compatible fashion and build a "module startable" variant
with Java11..22. Let's see.
Note: A Java 8 compiled .jar may run under Java11 but not vice versa.
But, the transformation to a version to be build by Java11..22 might be
impossible due to lack of compatible libraries as javax.mail to name just one.
In the 2000 decade all frame4j deployment jar files were signed. This we did
with an university code signing certificate sponsored by the German DFN Verein.
This certificate outdated, code signing became financially infeasible. Hence,
since some years you won't find jars signed with a suitable certificate of
mine.
Frame4J's base package URLs
According to Java rules, the base package's names correspond
to domains / URLs
Searching here you will find information, the repository and (this) javadoc
documentation.
Frame4J's main packages:
The framework's library classes are distributed over some packages:
• | de.frame4j.util | base and helper classes, |
• | de.frame4j.text | text helper, |
• | de.frame4j.time | time handling, |
• | de.frame4j.io | I/O support, |
• | de.frame4j.xml | xml support, |
• | de.frame4j.net | communications, JMX, LDAP, |
• | de.frame4j.math | functions and complex numbers, |
• | de.frame4j.graf | graphical helper, |
• | de.frame4j.demos | demonstrator programmes, |
• | de.frame4j | base package and Frame4's tools, |
• | de.weAut | process I/O support, |
• | de.weAut.demos | I/O demonstrators. |
This package
de.frame4j contains all tools and most
applications that are part of
Frame4J.
- Development and deployment tools
SVNkeys
beautify SVN tags for human reader
SVNkeysFilter
SVNKeys as doxygen filter
FS
FS search files and file doublets
FuR
FuR search and replace text (pattern) in files
Update
update files
- Tools for administrative tasks
Era
delete files
Del
delete files
UCopy
get file content by file or URL
ShowPorts
list (serial) ports
- Miscellaneous and helper applications
XMLio
XMLio XML → DOM → XML (check and transform)
ShowProps
show system and JDK/JRE properties
AskAlert
pause a script, ask with timeout
AskAlert
without parameters: display Frame4J version
SendMail
PKextr
get keys (public and private) from keystore
Exec
start a Frame4J application (first parameter)
Exec
no prameter starts AskAlert
TestOnPi
test IO operations/devices on a Pi
- Classes with (embedded) helper, test or demo application
- Demonstrators (games)
The scripts to build, document and deploy Frame4J use those tools too, mainly
from the first categories above. In that sense the framework is
"self building".
Hint: For having all tools handy, make Frame4J an installed extension.
We are trying to develop a replacement for installed extensions, before them
been broken by Java9.
The tool
Exec is able to start all frame4j tools.
Being made frame4j's Main-Class (in the manifest) allows to start them all
via -jar frame4.jar. This is just partly repairing the missing installed
extensions as all tools using iText, comm, mail and other extensions including
JNI .ddl or .so will fail on Java>8.
Conditions of use / license, Copyright
Copyright 2015 Albrecht Weinert, Bochum, Germany (a-weinert.de)
All rights reserved.
Frame4J is made
available under the terms of the Eclipse Public License V1.0 which accompanies
this distribution, and is available at
eclipse.org/legal/epl-v10.html
or as
text within the source
distribution.