$Id$ ============================================================================== APACHE FOP - README ============================================================================== Contents of this file: - What is FOP? - Legal Information - Where to get help? - How do I build FOP? - How do I run FOP? - Release Notes ============================================================================== What is FOP? ------------ Apache FOP is a print formatter driven by XSL formatting objects. It is a Java application that reads a formatting object tree conforming to the XSL 1.1 Recommendation (05 December 2006) and then turns it into a PDF document, certain other output formats or allows you to preview it directly on screen. Note that not all parts of the XSL 1.1 specification have yet been implemented. Apache FOP is part of Apache's XML Graphics project. The homepage of Apache FOP is http://xmlgraphics.apache.org/fop/. Legal Information ----------------- Apache FOP is published under the Apache License version 2.0. For the license text, please see the following files: - LICENSE - NOTICE Legal information on libraries used by Apache FOP can be found in the "lib/README.txt" file. Here is a list of files included in Apache FOP but not published under Apache License version 2.0: - K3 3 of 9 barcode font (TrueType) File: examples/fo/advanced/K3.TTF Info: examples/fo/advanced/K3.README - DejaVu LGC Serif font (TrueType) File: test/resources/fonts/DejaVuLGCSerif.ttf Info: test/resources/fonts/DejaVuLGCSerif.LICENSE Where to get help? ------------------ http://xmlgraphics.apache.org/fop/gethelp.html A mailing list where you can get all your questions about FOP answered is at [email protected]. You can subscribe by sending an empty mail to [email protected]. Before you post any questions, please have a look at the FAQ at http://xmlgraphics.apache.org/fop/faq.html and FO help page at http://xmlgraphics.apache.org/fop/fo.html. Please report bugs to bugzilla at http://issues.apache.org/bugzilla/ How do I build FOP? ------------------- If you've downloaded a binary distribution, you don't need to build FOP. Otherwise, please follow the instructions found here: http://xmlgraphics.apache.org/fop/stable/compiling.html [TEMPORARY] Until the above referenced instructions are updated, one of the following may be used to build FOP: Building with Maven (preferred) % mvn clean install Building with Ant (deprecated) % ant -f fop/build.xml clean all How do I run FOP? ----------------- Simply by typing "fop" on the command-line. Without any parameters you will receive a screen with instruction on how to call FOP from the command-line. For more details, see: http://xmlgraphics.apache.org/fop/stable/running.html [TEMPORARY] Note that FOP command line scripts and build results from ant will be found under the ./fop sub-directory. ============================================================================== RELEASE NOTES ============================================================================== Version 2.6 =========== Major Changes in Version 2.6 ---------------------------- * Support OTF/TTF SVG fonts * Allow overpaint of PDF border This release also contains a number of bug fixes. Version 2.5 =========== Major Changes in Version 2.5 ---------------------------- * Allow to hide empty blocks from structure tree This release also contains a number of bug fixes. Version 2.4 =========== Major Changes in Version 2.4 ---------------------------- * Require Java 7 or later * Drop dependency on Avalon-Framework * Add change bar generation * Add support for Khmer complex script This release also contains a number of bug fixes. Version 2.3 =========== Major Changes in Version 2.3 ---------------------------- * Support for unicode Surrogate pairs * OTF fonts not working on Mac Preview This release also contains a number of bug fixes. Version 2.2 =========== Major Changes in Version 2.2 ---------------------------- * PCL Color support * Allow generation of bold/italic versions of fonts for PDF * Allow to convert OTF fonts to Type 1 for Postscript * Deduplicate PDF content streams * Update to PDFBox 2 * Transition from Ant to Maven Build Process This release also contains a number of bug fixes. Version 2.1 =========== Major Changes in Version 2.1 ---------------------------- * Add PreloaderRawPNG to handle images ImageIO cant * Support Barcode4J page number * Support CMYK JPEG in AFP * Support IPD change on last page * Support PDF/UA * Support TrueType fonts in PCL * Support Truetype for AFP * Support for PDF/A-3 This release also contains a number of bug fixes. Version 2.0 =========== Java 6 or later is the minimum runtime environment needed. Because of changes to the API, the version number has been bumped to 2.0. Major Changes in Version 2.0 ---------------------------- * Side float support * Whitespace Management Extension * fo:inline-container partial support * Improved support for complex scripts * PDF Linearization * Support OpenType CFF fonts * Subset support for Type 1 fonts * Support for AES 256 PDF encryption * SVG graphics can use FOP custom fonts This release also contains a number of bug fixes. Version 1.1 =========== This release of Apache FOP primarily addresses bug fixes and also adds a number of new features. See below for details. Compliance ---------- This release implements the XSL 1.0 and 1.1 recommendations to a relatively high degree of compliance. See the compliance page http://xmlgraphics.apache.org/fop/compliance.html for further details. Known issues ------------ A detailed list of known issues in this release is available at http://xmlgraphics.apache.org/fop/1.1/knownissues_overview.html. Major Changes in Version 1.1 ---------------------------- * Adds support for complex scripts. * Adds support for TTF fonts in PostScript. * Adds support for PDF Object Streams. * Adds support for PDF 128-bit encryption. A more detailed list of changes in this release is available at http://xmlgraphics.apache.org/fop/1.1/changes_1.1.html. A more detailed list of changes in this and earlier releases is available at http://xmlgraphics.apache.org/fop/changes.html. Version 1.0 =========== This is a production grade release of Apache FOP. It contains many bug fixes and new features. See below for details. Compliance ---------- This release implements the XSL 1.0 and 1.1 recommendations to a high degree of compliance. See the compliance page http://xmlgraphics.apache.org/fop/compliance.html for a detailed overview. Known issues ------------ The known issues of this release are listed at http://xmlgraphics.apache.org/fop/1.0/knownissues_overview.html. Major Changes in Version 1.0 ---------------------------- * Added support for addressing all glyphs available in a Type 1 font * Added support for auto-configuring TrueType Collections. XML font metrics files for *.ttc fonts are not required anymore. * Added support for rendering pages using Java Printing System. * Support character-by-character font-selection strategy on fo:character element. * Implemented word-by-ford font-selection strategy on text. * AFP Output: Various enhancements * FOP now creates ToUnicode CMaps for single-byte fonts that don't use built-in encodings * Introduced a new, additional intermediate format optimized for performance. See the intermediate format documentation for details. * Added an initial set of extensions for prepress support. * Added limited support for different page widths within a page-sequence. * Added support for TrueType fonts with symbol character maps (like "Wingdings" and "Symbol"). * Added an event handling framework which allows to get better feedback from within FOP with the ability to customize problem management. The long list of changes in this release is available at http://xmlgraphics.apache.org/fop/1.0/changes_1.0.html. The long list of changes in this and earlier releases is available at http://xmlgraphics.apache.org/fop/changes.html. Version 0.95 ============ This is a production grade release of Apache FOP. It contains many bug fixes and new features. See below for details. Compliance ---------- This release implements the XSL 1.0 and 1.1 recommendations to a high degree of compliance. See the compliance page http://xmlgraphics.apache.org/fop/compliance.html for a detailed overview. Known issues ------------ The known issues of this release are listed at http://xmlgraphics.apache.org/fop/0.95/knownissues_overview.html. Major Changes in Version 0.95 ----------------------------- * Add new fox:external-document extension element that allows to insert whole documents into a page-sequence (JM) * Add support for background on fo:table-column and fo:table-header/footer/body elements (VH) * Add support for conditional borders in tables (VH) * Add support for scale-down-to-fit and scale-up-to-fit (JM) * Fix various bugs and performance problems with external graphics by introducing a new image loading framework (JM) The long list of changes in this release is available at http://xmlgraphics.apache.org/fop/0.95/changes_0.95.html. The long list of changes in this and earlier releases is available at http://xmlgraphics.apache.org/fop/changes.html. Changes since Version 0.95beta ------------------------------ Please refer to the list of changes on the web: http://xmlgraphics.apache.org/fop/changes.html Version 0.94 ============ This is the second production grade release of the new FOP codebase. It contains many bug fixes and new features. See below for details. Compliance ---------- This release implements the XSL 1.0 and 1.1 recommendations to a high degree of compliance. See the compliance page http://xmlgraphics.apache.org/fop/compliance.html for a detailed overview. Known issues ------------ The known issues of this release are listed at http://xmlgraphics.apache.org/fop/0.94/knownissues_overview.html. Major Changes in Version 0.94 ----------------------------- * Add support for font auto-detection (JM) Thanks to Adrian Cumiskey * Add support for the border-collapsing model in tables (VH, JM) * Add support for named destinations in PDF (JB) * Add support for UAX#14 type line breaking (MM) The long list of changes in this release is available at http://xmlgraphics.apache.org/fop/0.94/changes_0.94.html. The long list of changes in this and earlier releases is available at http://xmlgraphics.apache.org/fop/changes.html. Version 0.93 ============ This is the first production grade release of the new FOP codebase. * It contains the new API first introduced in release 0.92 beta. The preceding API has been removed. * This release again contains many bug fixes and new features. See below for details. Compliance ---------- This release implements the XSL 1.0 and 1.1 recommendations to a high degree of compliance. See the compliance page http://xmlgraphics.apache.org/fop/compliance.html for a detailed overview. Known issues ------------ The known issues of this release are listed at http://xmlgraphics.apache.org/fop/knownissues.html. Upgrading --------- You may experience different behaviour compared to version 0.20.5. Please consult the "Upgrading" page (http://xmlgraphics.apache.org/fop/stable/upgrading.html) for details. Major Changes in Version 0.93 ----------------------------- * Added support for the use of Open Type fonts (BD) * Support for the rgb-icc() function and for a proprietary cmyk() function (for device CMYK colors only through the PDF renderer so far). (JM) Thanks to Peter Coppens. Fixes 40729. * Enabled Copy/Paste from PDF content in Acrobat Reader for text using embedded TrueType fonts. (BD) Thanks to Adam Strzelecki, Victor Mote. Fixes 5535. * Added support for PDF/A-1b and PDF/X-3:2003. (Note: this may still be a bit incomplete. Feedback is welcome!) * The Java2DRenderer (and therefore the print and bitmap renderers) is now offering the same quality as the PDF and PS renderers. Note: There can still be little differences between PDF and Print/PNG/TIFF because the latter uses a different font metrics source. * Automatic support for all fonts available to the Java2D subsystem for all Java2D-descendant renderers (TIFF, PNG, print, AWT). The long list of changes in this release is available at http://xmlgraphics.apache.org/fop/0.93/changes_0.93.html. The long list of changes in this and earlier releases is available at http://xmlgraphics.apache.org/fop/changes.html. The Apache FOP team asks you for your continued feedback on the software. We're also interested in success stories with the new release. So if the latest version works fine for you, please tell us! And if it doesn't, you may tell us as well, of course. ;-) Release notes for older FOP versions can be found on: http://xmlgraphics.apache.org/fop/relnotes.html
Apache FOP is a print formatter driven by XSL formatting objects
Overview
Comments
-
Allow the FOUserAgent class to be extended by applications.
It used to be possible to provide default page dimensions on a per-UA basis. This was useful because the needed page dimensions may change for different runs (Fop instances) in the same application (same FopFactory instance). An application of mine needs this: the page dimensions are set to whatever the user previously entered in the Page Setup dialog.
Since FOP 2.0, however, this is no longer possible, because there is no public or protected constructor to the FOUserAgent class. In my use case, that means there is no way to override the getPageWidth and getPageHeight methods.
This PR makes FOUserAgent's constructor protected and take only a FopFactory parameter (so the resolver is still taken from the FopFactory). Applications needing to customize FOUserAgent's behavior can now do so.
This is the same as the patch attached to FOP-2729.
-
Use URIResolver when loading XSLT source
The XSL processor attempts to reach out to the internet to resolve URIs in XSLT source files. This happens because the URIResolver is not registered on the TransformerFactory when it creates a Transformer instance for a given XSLT source.
This fix assigns the URIResolver to the TransformerFactory (which then gets assigned to any Transformer created from that factory) rather than on the Transformer. This change allows the processor to resolve URIs in the XSLT source when the source is being loaded.
This patch also registers the InputHandler as an ErrorListener for the TransformerFactory so that any errors that occur while loading the XSLT are logged consistently.
-
FOP-2704: Make Google Roboto font (and probably others) usable
This applies the patch brought forward by Neil Smeby in https://issues.apache.org/jira/browse/FOP-2704. In short, it works around the
UnsupportedOperationException: coverage set class table not yet supported
exception when trying to use Google's Roboto font (updated 2017).Maven
${version}
placeholders are replaced with plain versions to work around a potential issue in Jitpack.io.See https://jitpack.io/#webfactory/fop/da392ffca how you can easily give this patch a try with your preferred build system.
-
FOP-2847: fix PNGs with index color model did not render SMask
java.awt.image.BufferedImage.getAlphRaster() return null if an IndexColorModel is used. This resulted in those PNGs missing the SMask and had broken transparency effects.
-
FOP-2847: fix Mask for PNG with IndexColorModel and transparent color
PNG images with indexed color palette featuring tRNS transparency encoding had potentially wrong PDF Mask. If image contained transparency but no fully transparent pixel, then the default implementation of PDFImageXObject still generates a Mask entry with three color components. PDF Specification expects the index when using a palette based color model. Thus Acrobat Reader does not process this image and shows error message. In general ImageRenderedAdapter would overwrite this Mask, but since AbstractImageAdapter.getIndexOfFirstTransparentColorInPalette() does return null if image does not contain fully transparent pixels the more general implementation of PDFImageXObject leaks to the output.
-
FOP-2733: remove avalon
I removed avalon (a project that is dead for over a decade now) from the code base. For this to happen, I've written a clean-room (i.e. I didn't looked at the avalon code) implementation of the few bits of avalon that are still in use by FOP. After that I fixed the tests.
Apart from some minor stuff that is only used for testing, the main thing of avalon that was still in use was the Configuration stuff.
I also renamed the packages name of the (now embeded) avalon stuff like this:
org.apache.avalon.framework.configuration
moved toorg.apache.fop.configuration
org.apache.avalon.framework.activity
moved toorg.apache.fop.activity
org.apache.avalon.framework.container
also moved toorg.apache.fop.activity
This rename is completely optional, i.e. if there are concerns against it, I will update my change request and keep the original package names.
I would be glad if you could consider my patch for merge into the
trunk
branch.Kind regards,
aanno
-
[FOP-2815] Replace SimpleLog with LogFactory
References https://issues.apache.org/jira/browse/FOP-2815.
- Replaces deprecated SimpleLog with LogFactory. The LogFactory gets set when the logger is null. The logging level is also set to INFO (value: 800).
- Bumped the parent pom to 2.4.1-SNAPSHOT.
-
Change the method modifier "build" to "getParams".
The method just returns one field "params" of the current class, thus method name "getParams" should be better than "build".
-
FOP-1969: Surrogate pairs not treated as single unicode codepoint for…
ApacheFOP treats surrogates pairs as 2 different codepoints. Most of the methods accepts/returns a single char (Eg Typeface.mapChar(char c)) which mean they can deal only with BMP characters (<= 0xFFFF).
In order to correctly handle the non-BMP characters (Eg: Emoji, Mathematical symbols, ancient scripts, CJK extensions) ApacheFOP should deal with int rather then char. It is possible to represent the whole Unicode range using a single int while it is not possible with a single UTF-16 char.
These are the 3 main aspects of this modification:
- Read the non-BMP glyphs from the font
- Make the API to use int instead of char
- Convert surrogate pairs to a single int
- Adapt the renderer
Read the non-BMP glyphs from the font
The glyph information are stored in one of the font CMAPs tables. The implemented one is:
- PlatformID: 3 (Microsoft)
- EncodingID: 10 (Unicode UCS-4)
- CMAP format: 12 (Formats 8, 10, and 12, 13, and 14 are used for mixed 16/32-bit and pure 32-bit mappings. This supports text encoded with surrogates in Unicode 2.0 and later)
Apple TrueType Reference Manual: (https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html)
Make the API to use int instead of char
Such modification would mainly affects the Font classes hierarchy. The Typeface class is one of the base classes of the Font Hierarchy and is one of the classes that should be modified. It has though (as of September 2016) approximately 27 subclasses/implementations which would make the scope of the modification pretty huge.
Since not all the font classes are supposed to deal with non-BMP codepoints it is possible to narrow down the the scope of the modification to a lower number of classes. This is supposed to be just a step that allow to have at least a working path to handle surrogate pairs.
The class identified as good point to start is CIDFont as a CID Fonts has been designed to handle huge character sets. From Adobe documentation: "CID fonts are a new format of composite (multibyte) Type 1 fonts that better address the requirements of Far East markets. Adobe developed the CID-keyed font file format to support large character set fonts..." (src: http://www.adobe.com/products/postscript/pdfs/cid.pdf).
FontMetrics Typeface SystemFontMetricsMapper LazyFont AFPFont RasterFont AbstractOutlineFont DoubleByteFont OutlineFont AFPTrueTypeFont in AFPFontConfig Base14Font Helvetica Symbol HelveticaBoldOblique HelveticaOblique HelveticaBold ZapfDingbats Courier CourierBold TimesBold TimesBoldItalic TimesItalic TimesRoman CourierOblique CourierBoldOblique CustomFontMetricsMapper CustomFont SingleByteFont + hasCodePoint(int):boolean CIDFont <------------------ + mapCodePoint(int):int MultiByteFont ~ getUnicode(int):char -> getUnicode(int):int CIDSet (Used by CIDFont) <-------------- + mapCodePoint(int, int):int CIDSubset CIDFull + hasCodePoint(int):boolean Font <----------------------------------- + mapCodePoint(int):int
getUnicode(): is defined in CIDSet (is not a property of the Typeface class or one of its subclasses). I changed the firm of this method to handle int instead of char because it is semantically incorrect to represent unicode with a single UTF-16 char. As you can see from the CIDSet hierarchy the change affect only 3 classes.
getUnicodeFromGID(): this method is defined in CustomFont and CIDSet. It never get called from the MultiByteFont path, probably because getUnicode is used instead. That is why I'm down casting the return value from int to char in CIDFull and CIDSubset. Probably the best thing to do would be to get rid of this method or make it handle int, but again the change would affect more classes then the ones in the scope.
Convert surrogate pairs to a single int
The data arrives as String and non-BMP characters are represented as surrogate pairs. Every time some operation is performed on the data (eg. Font.mapCodePoint(int)) surrogate pairs should be converted to the corresponding code point.
The current implementation make this conversion inside the for loops used to deal with the data:
for (int i = 0, i < text.length(); i++) { int cp = text.charAt(i); if (CharUtilities.containsSurrogatePairAt(text, i)) { // Throw an exception if it is an ill-formed surrogate pair c = Character.toCodePoint((char) c, text.charAt(++i)); } [...] }
or
for (int i = 0, i < text.length(); i++) { int cp = text.codePointAt(i); // Java API, do NOT throw error if it is an ill-formed surrogate pair i += CharUtilities.incrementIfNonBMP(orgChar); [...] }
The best thing to do in future is implement something like the Java8 API String.codepoints() which allow you to directly iterate through a stream/array of codepoints avoiding boilerplate code.
Adapt the Renderer
Every ApacheFOIP output format has it's own way to represent data which means that each renderer need to be adapted to handle non-BMP codepoints.
The adapted Renderer/Painters are:
PDFPainter PSPainter Java2DPainter Java2DRenderer
-
FOP-2847: Support palette-based transparency via tRNS chunk of PNG im…
…ages in PDF export
java.awt.image.BufferedImage.getAlphRaster() return null if an IndexColorModel is used. This resulted in those PNGs missing the SMask and had broken transparency effects.
PNG images with indexed color palette featuring tRNS transparency encoding had potentially wrong PDF Mask. If image contained transparency but no fully transparent pixel, then the default implementation of PDFImageXObject still generates a Mask entry with three color components. PDF Specification expects the index when using a palette based color model. Thus Acrobat Reader does not process this image and shows an error message. In general ImageRenderedAdapter would overwrite this Mask, but since AbstractImageAdapter.getIndexOfFirstTransparentColorInPalette() does return null if image does not contain fully transparent pixels the more general implementation of PDFImageXObject leaks to the output. This has been fixed.
-
[FEATURE] Adds Configurator to AbstractSVGDocumentHandler.
Beforehand, the SVGDocumentHandler could not be used directly and had to be overwritten in the way, how the getConfigurator() method is over- written. Also fonts could not be embedded without the configurator.
The foUserAgent can now be modified in the way: foUserAgent.setRendererOverride(new SVGRenderer(foUserAgent)); foUserAgent.setDocumentHandlerOverride(new SVGDocumentHandler(IFContext context);
After that, the FopFactory.newFop(..) can be called and the transformation can be done.
-
Include xmlapis*.jar when creating fop.war
This prevents
<4>Batik not in class path <4>java.lang.NoClassDefFoundError: org/w3c/dom/svg/SVGDocument <4> at java.base/java.lang.ClassLoader.defineClass1(Native Method) <4> at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) <4> at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
-
Change the method name "make" to "getNameId".
This method seems to find a "Property" related to the fo.getNameId(). Hence, the new name "getNameId" should be better than "make".
-
FOP-2854: Allow to override CreationDate
Allow to override build date with
SOURCE_DATE_EPOCH
in order to make builds reproducible. See https://reproducible-builds.org/ for why this is good and https://reproducible-builds.org/specs/source-date-epoch/ for the definition of this variable.This patch was done while working on reproducible builds for openSUSE.
Note: probably only a partial fix towards reproducible pdf output / https://issues.apache.org/jira/browse/FOP-2854
-
FOP-2858 java.awt.Font.getName() returns localized name
As described here https://issues.apache.org/jira/browse/FOP-2858?filter=-2, this patch fixes the font name localization problem, which prevents guessWeight/Style methods from working as they are based on english keywords.
-
FOP-2704: Make Google Roboto font (and probably others) usable
This is a re-post of #59 which was apparently closed by an automatic process and/or due to a force-push on the
fop-2_3
branch?It applies the patch brought forward by Neil Smeby in https://issues.apache.org/jira/browse/FOP-2704. In short, it works around the UnsupportedOperationException: coverage set class table not yet supported exception when trying to use Google's Roboto font (updated 2017).
See https://jitpack.io/#webfactory/fop/48e0a1567 how you can easily give this patch a try with your preferred build system.
Support alternative markup for Apache Maven POM files
Overview Polyglot for Maven is a set of extensions for Maven 3.3.1+ that allows the POM model to be written in dialects other than XML. Several of the
Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text
Welcome to Apache OpenNLP! The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text. This toolkit is
Cluster manager for Apache Doris
Apache Doris (incubating) Manager The repository contains Manager for Apache Doris (incubating) License Apache License, Version 2.0 Report issues or s
Flink/Spark Connectors for Apache Doris
Flink/Spark Connectors for Apache Doris
Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.
json-io Perfect Java serialization to and from JSON format (available on Maven Central). To include in your project: <dependency> <groupId>com.cedar
Calef - CalEF (Calendar Entry Formatter) : Select an entry in Android-Kalender and send/share the entry's content as human readable text.
CalEF (Calendar Entry Formatter) Select an entry in Android-Kalender and send/share the entry's content as human readable text. Usually calendar entri
For Energy to InfluxDB Formatting, Tranformation and Routing
For Energy to InfluxDB Formatting, Tranformation and Routing
Object-Oriented and Immutable Java Chain of XSL Transformations
It's a chain of XSL transformations in Java. You add this to your pom.xml: <dependency> <groupId>com.yegor256</groupId> <artifactId>xsline</artifa
Annotation processor to create immutable objects and builders. Feels like Guava's immutable collections but for regular value objects. JSON, Jackson, Gson, JAX-RS integrations included
Read full documentation at http://immutables.org // Define abstract value type using interface, abstract class or annotation @Value.Immutable public i
cglib - Byte Code Generation Library is high level API to generate and transform Java byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.
cglib Byte Code Generation Library is high level API to generate and transform JAVA byte code. It is used by AOP, testing, data access frameworks to g
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Redisson - Redis Java client with features of In-Memory Data Grid Quick start | Documentation | Javadocs | Changelog | Code examples | FAQs | Report a
sql2o is a small library, which makes it easy to convert the result of your sql-statements into objects. No resultset hacking required. Kind of like an orm, but without the sql-generation capabilities. Supports named parameters.
sql2o Sql2o is a small java library, with the purpose of making database interaction easy. When fetching data from the database, the ResultSet will au
A Java serialization/deserialization library to convert Java Objects into JSON and back
Gson Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to a
Powerful event-bus optimized for high throughput in multi-threaded applications. Features: Sync and Async event publication, weak/strong references, event filtering, annotation driven
MBassador MBassador is a light-weight, high-performance event bus implementing the publish subscribe pattern. It is designed for ease of use and aims
A Java library for serializing objects as PHP serialization format.
Java PHP Serializer Latest release: A Java library for serializing objects as PHP serialization format. The library fully implements the PHP serializa
Java 8 optimized, memory efficient, speedy template engine producing statically typed, plain java objects
Rocker Templates by Fizzed Fizzed, Inc. (Follow on Twitter: @fizzed_inc) Sponsored by Rocker is proudly sponsored by Greenback. We love the service an
A library for setting up Java objects as test data.
Beanmother Beanmother helps to create various objects, simple and complex, super easily with fixtures for testing. It encourages developers to write m
Generator fake objects from a template
Fixture Factory is a tool to help developers quickly build and organize fake objects for unit tests. The key idea is to create specification limits of
JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.
pact-jvm JVM implementation of the consumer driven contract library pact. From the Ruby Pact website: Define a pact between service consumers and prov
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Redisson - Redis Java client with features of In-Memory Data Grid Quick start | Documentation | Javadocs | Changelog | Code examples | FAQs | Report a