Project

General

Profile

Software Dependencies

This chapter documents the exact list of third party software upon which FWD depends, for FWD v3.1.0. These dependencies include subsystems (e.g. the Java Development Kit), compilers (e.g. gcc), middleware (e.g. RDBMS), utilities, jar files and shared libraries (e.g. .so files on UNIX/Linux, DLL files on Windows). All of these are required for FWD to operate in one way or another, but the full list is not required for all use cases.

To see the details for the older version of FWD, see Software Dependencies for FWD v3.0.0.

Operating System

Java processes are normally platform neutral. Most of the FWD Java code is written in pure Java, it is possible for such processing to be run on any operating system or hardware platform that supports the a compatible Java 8 environment for all system components. Some of the system components of FWD do rely upon native code:

Component Native Code Dependency
FWD Build Environment Yes
FWD Code Analytics No
FWD Conversion No
FWD Application Server No
H2 Database No
PostgreSQL Database Yes
SQLServer Database Yes
FWD Client (and FWD Spawner) Yes
FWD Web Client No

If the specified component does not have any native code dependency, then it can be run on any operating system with the right level of compatible Java (JDK 8).

For the components that have native code dependencies, it is important that those dependencies are satisfied. Please see System Requirements for details on the operating systems that are already supported.

The sections below will provide details of the native dependencies for those components which have them.

To be more specific, FWD has been successfully run on a variety of recent Linux distributions from Ubuntu, SuSE, Red Hat and CentOS. There are no specific dependencies on any particular distribution. It is expected that any UNIX-­compatible system would work properly.

FWD is also fully supported on Windows, having been successfully run on a range of versions from Windows Server 2008 R2, Windows 7 and later versions.

A specific list of supported operating systems and hardware platforms can be seen in Supported Platforms.

List of Dependencies

The following tables list all the dependencies used by FWD during the conversion process and during runtime. Please note that all the listed jar files are automatically fetched during build.

If for whatever reason you cannot fetch the dependencies folowing the standard build process you can download them individually (see Obtaining the 3rd Party Code). The dependency files must be then placed in <fwd_home>/local-repo/ directory following the Maven repository file layout.

Build Environment

Majority of FWD is built using the Java technology, while smaller portions of FWD is running native code targeting either Linux operating systems or Windows. The following list of software dependencies is required to build FWD.

The build process is automated using the open source Gradle 3.x and Apache Ant projects. Gradle is written to dynamically download the jars upon which the FWD build process depends. The following is the list of minimum dependencies needed to build:

Name Minimum Version Target Description
Java Development Kit 1.8 Java A development environment for building applications and components using the Java programming language.
Ant 1.9 Java Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other.*
Gradle 3.0 Java Gradle is an open source build automation system. Note that the required version of Gradle is already provided in the FWD code repository in the form of Gradle Wrapper. See https://docs.gradle.org/current/userguide/gradle_wrapper.html for more information about Graddle Wrapper.
gcc 5.4 Linux GNU C Compiler.
binutils 2.26 Linux GNU assembler, linker and binary utilities.
mingw 3.x Windows MinGW provides a complete Open Source programming tool set which is suitable for the development of native MS-Windows applications.*
libffi-dev 3.2.1 Linux The libffi library provides a portable, high level programming interface to various calling conventions.* This dependency is needed only on Linux. In the official Ubuntu repositories can be found as libffi-dev.
libjvm 1.8 Linux, Windows Java Native Interface (JNI) is a programming framework that enables Java code running in a Java Virtual Machine (JVM) to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in other languages such as C, C++ and assembly.*
libncurses-dev ncurses library 5.7 (last available 5.9) Linux A terminal-independent method for providing a character user interface. Required only on Linux/UNIX. This dependency is needed only on Linux. In the official Ubuntu repositories can be found as libncurses5-dev.

Due to the ANTLR dependencies, version 1.5.3 does not work. Please ensure that Ant can be found via the user's PATH.

Code Analytics

File Project and Version Modified Description
Java Development Kit OpenJDK 1.8 or the equivalent No A development environment for building applications and components using the Java programming language. The Oracle JDK 1.8 and OpenJDK 1.8 are well tested options. Versions of Oracle JDK 1.8.0_101 and OpenJDK 1.8.0_111 have been tested and have been found to work well.

Either the 32-bit or 64-bit version may be used. For conversion, even projects as large as 15MM lines of code have been able to successfully calculate reports within 4GB of memory. For this reason, there is no hard requirement for the 64-bit JVM.
Ant 1.9 No Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other.*
Gradle 3.0 No Gradle is an open source build automation system. Note that the required version of Gradle is already provided in the FWD code repository in the form of Gradle Wrapper. See https://docs.gradle.org/current/userguide/gradle_wrapper.html for more information about Graddle Wrapper.
antlr-2.7.7.jar ANTLR 2.7.7 No A Language Recognition tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.
fwd-h2-1.4.192.jar H2 Embedded Database 1.4.192 Yes H2 database is used in embedded mode for temporary table support and for internal runtime housekeeping. It can also be used with a file-based permanent database. This is useful for development and testing purposes. A customized version of H2 is included in the FWD project. For information on patching and building H2 library read Patching and Building Customized 3rd Party Libraries.
fwd-hibernate-core-4.1.8.jar Hibernate 4.1.8 Yes Patched version of the core library of the the high-performance Object/Relational persistence and query service. Hibernate is used to provide object to relational database mapping, database caching and other data persistence support. This customized version of Hibernate is included in the FWD project. For information on patching and building Hibernate library read Patching and Building Customized 3rd Party Libraries.
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
jboss-logging-3.1.0.GA.jar
jta-1.1.jar
Hibernate 4.1.8 No A high-performance Object/Relational persistence and query service. It takes care of the mapping from Java classes to database tables and from Java data types to SQL data types. It provides data query and retrieval facilities that significantly reduce development time.
commons-beanutils-core-1.7.0.jar
commons-codec-1.7.jar
commons-collections-3.2.2.jar
commons-configuration-1.6.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
gremlin-core-3.2.3.jar
gremlin-groovy-3.2.3.jar
gremlin-shaded-3.2.3.jar
groovy-2.4.7-indy.jar
groovy-2.4.7.jar
groovy-console-2.4.7.jar
groovy-groovysh-2.4.7-indy.jar
groovy-json-2.4.7-indy.jar
groovy-jsr223-2.4.7-indy.jar
groovy-swing-2.4.7.jar
groovy-templates-2.4.7.jar
groovy-xml-2.4.7.jar
guava-18.0.jar
high-scale-lib-1.1.2.jar
hppc-0.7.1.jar
metrics-core-3.0.1.jar
spatial4j-0.4.1.jar
tinkergraph-gremlin-3.2.3.jar
janusgraph-berkeleyje-0.1.0.jar
janusgraph-core-0.1.0.jar
janusgraph-lucene-0.1.0.jar
JanusGraph support No JanusGraph is a highly scalable graph database optimized for storing and querying large graphs with billions of vertices and edges distributed across a multi-machine cluster. It is a transactional database that can support thousands of concurrent users, complex traversals, and analytic graph queries.*
lucene-analyzers-common-4.4.0.jar
lucene-core-4.4.0.jar
lucene-queries-4.4.0.jar
lucene-queryparser-4.4.0.jar
lucene-spatial-4.4.0.jar
slf4j-api-1.7.5.jar
JavaGraph - Lucene Index support No Lucene Index support for JanusGraph.
jackson-annotations-2.8.0.jar
jackson-databind-2.8.8.jar
jackson-core-2.8.8.jar
jackson-jaxrs-base-2.8.8.jar
jackson-jaxrs-json-provider-2.8.8.jar
jackson-module-jaxb-annotations-2.8.8.jar
Jackson JSON Library No Java to JSON Serialization implementation. *
jetty-all-9.3.8.v20160314-uber.jar
javax.servlet-api-3.1.0.jar
Jetty 9.3.8 No Web UI and JavaScript bindings. Provides HTTP server, HTTP client, and javax.servlet container.
dom4j-1.6.jar
xml-apis-1.3.04.jar
XML Processing Libraries No A collection of libraries responsible for XML processing.
adamwdraper-Numeral-js-7de892f.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
bootstrap-3.3.7-dist.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
cbtree-v0.9.4-0.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
dojo-1.10.0-distribution.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. *
d3-4.9.1.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
jquery-3.2.1.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
jquery-loading-overlay-1.5.3.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
jquery-ui-1.12.1.custom.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
tabulator-master-2.12.0.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *
virtualscroller-1.zip Javascript UI Library No This is a Javascript library used in the browser UI for Code Analytics. It has been manually packaged by Golden Code into a zip file that is automatically downloaded from https://proj.goldencode.com/artifacts/javascript/ using gradle. *

Conversion

File Project and Version Modified Description
Java Development Kit OpenJDK 1.8 or the equivalent No A development environment for building applications and components using the Java programming language. The Oracle JDK 1.8 and OpenJDK 1.8 are well tested options. Versions of Oracle JDK 1.8.0_101 and OpenJDK 1.8.0_111 have been tested and have been found to work well.

Either the 32-bit or 64-bit version may be used. For conversion, even projects as large as 15MM lines of code have been able to successfully convert within 4GB of memory. For this reason, there is no strong requirement for the 64-bit JVM.
antlr-2.7.7.jar ANTLR 2.7.7 No A Language Recognition tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.
fwd-h2-1.4.192.jar H2 Embedded Database 1.4.192 Yes H2 database is used in embedded mode for temporary table support and for internal runtime housekeeping. It can also be used with a file-based permanent database. This is useful for development and testing purposes. A customized version of H2 is included in the FWD project. For information on patching and building H2 library read Patching and Building Customized 3rd Party Libraries.
fwd-hibernate-core-4.1.8.jar Hibernate 4.1.8 Yes Patched version of the core library of the the high-performance Object/Relational persistence and query service. Hibernate is used to provide object to relational database mapping, database caching and other data persistence support. This customized version of Hibernate is included in the FWD project. For information on patching and building Hibernate library read Patching and Building Customized 3rd Party Libraries.
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
jboss-logging-3.1.0.GA.jar
jta-1.1.jar
Hibernate 4.1.8 No A high-performance Object/Relational persistence and query service. It takes care of the mapping from Java classes to database tables and from Java data types to SQL data types. It provides data query and retrieval facilities that significantly reduce development time.
dom4j-1.6.jar
xml-apis-1.3.04.jar
XML Processing Libraries No A collection of libraries responsible for XML processing.

Application Server

Dependency Project and Version Modified Purpose Description
Java Development Kit OpenJDK 1.8 or the equivalent No Java Runtime A development environment for building and executing applications and components using the Java programming language.

The core requirement for the JVM is that it must be compatible with Java 8.

Each FWD component (conversion, application server, client, user-defined functions running at the database) can use a different JVM. These can run on the same system or different systems. They can even run on a different operating system platform. There is no dependency between JVMs of different components, since they are separate operating system processes.

The following JVM versions have been well tested:

  • Oracle JDK 1.8 on Linux
  • Oracle JDK 1.8 on Windows
  • OpenJDK 1.8 on Linux
  • OpenJDK 1.8 on Windows

The specific versions of Oracle JDK 1.8.0_101 and OpenJDK 1.8.0_111 have both been tested and have been found to work well. Generally, it is safe to use any later version of the Java 1.8 platform.

The application server dynamically generates some converted ABL code (at runtime), which means that there are parts of the runtime system that may depend upon tools in the JDK. For this reason, the JDK is required and a JRE (runtime only, no development kit) cannot be used.

The application server process (JVM) is where the majority of working memory exists for each client (accessing the system). The actual memory used will depend on the queries, the block flow, recursion and other features of the original ABL. The converted application code is actually running in the common server process, which is different from how Progress ABL works.

Although either the 32-bit or 64-bit version may be used, with the large memory requirements of server processes, it is expected that the 64-bit version will be necessary in virtually all installations. The 64-bit JVM is a good default choice.

Although it is possible to run smaller server instances using a 32-bit JVM, this is likely to be only useful for very specialized cases. Running a small application (few users and no large working set requirements) would be possible. It might be useful to do this for hardware that is limited (32-bit architecture CPU or very limited RAM).

antlr-2.7.7.jar ANTLR 2.7.7 No Dynamic Query Conversion A Language Recognition tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages. ANTLR provides excellent support for tree construction, tree walking, translation, error recovery, and error reporting.
axiom-api-1.2.13.jar
axiom-impl-1.2.13.jar
axis2-adb-1.6.2.jar
axis2-kernel-1.6.2.jar
axis2-transport-http-1.6.2.jar
axis2-transport-local-1.6.2.jar
httpcore-4.0.jar
mail-1.4.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.7.jar
AXIS2 support No Communication Apache Axis2™ is a Web Services / SOAP / WSDL engine.
commons-httpclient-3.1.jar
commons-codec-1.7.jar
Jakarta Commons HttpClient 3.1 No Communication Provides an efficient, up-to-date, and feature-rich package implementing the client side of the most recent HTTP standards and recommendations.
postgresql-9.4-1211.jar PostgreSQL 9.4 No Database driver PostgreSQL jdbc drivers.
fwd-h2-1.4.192.jar H2 Embedded Database 1.4.192 Yes Database engine and driver H2 database is used in embedded mode for temporary table support and for internal runtime housekeeping. It can also be used as a file-based permanent database. This is very useful for development and testing purposes. A customized version of H2 is included in the FWD project. For information on patching and building H2 library read Patching and Building Customized 3rd Party Libraries. The patches and original source distribution can be found in External Project Patches.
hibernate-c3p0-4.1.8.Final.jar
hibernate-commons-annotations-4.0.1.Final.jar
hibernate-ehcache-4.1.8.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
jboss-logging-3.1.0.GA.jar
jta-1.1.jar
Hibernate 4.1.8 No Database O/R mapping A high-performance Object/Relational persistence and query service. It takes care of the mapping from Java classes to database tables and from Java data types to SQL data types. It provides data query and retrieval facilities that significantly reduce development time.
javassist-3.15.0-GA.jar Javassist 3.15.0 No Database O/R mapping A class library for editing bytecodes in Java.
jboss-transaction-api_1.1_spec-1.0.0.Final.jar JBoss Transaction API 1.1 No Database O/R mapping Provides custom Java interfaces used by the transaction manager and the parties involved in a distributed transaction system.
fwd-hibernate-core-4.1.8.jar Hibernate 4.1.8 Yes Database O/R mapping Patched version of the core library of the the high-performance Object/Relational persistence and query service. Hibernate is used to provide object to relational database mapping, database caching and other data persistence support. A customized version of Hibernate is included in the FWD project. For information on patching and building Hibernate library read Patching and Building Customized 3rd Party Libraries. The patches and original source distribution can be found in External Project Patches.
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.11.jar
C3p0 0.9.5.2 No Database support An easy-to-use library for augmenting traditional (DriverManager-based) JDBC drivers with JNDI-bindable DataSources, including DataSources that implement Connection and Statement Pooling, as described by the jdbc3 spec and jdbc2 std extension.
cglib-2.1_3.jar Code Generation Library 2.1 No Database support A Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime.
ehcache-core-2.6.2.jar Ehcache 2.6.2 No Database support An open source, standards-based cache used to boost performance, offload the database and simplify scalability.
It can scale from in-process with one or more nodes through to a mixed in-process/out-of-process configuration with terabyte-sized caches.
commons-logging-1.1.1.jar Jakarta Commons Logging 1.1.1 No Logging A library that uses the commons-logging API can be used with any logging implementation at runtime.
slf4j-api-1.7.5.jar
slf4j-jdk14-1.6.1.jar
Simple Logging Facade for Java 1.6.1 No Logging The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks.
asm-5.0.3.jar Asm 5.0.3 No Programming Support An all purpose Java bytecode manipulation and analysis framework. It can be used to modify existing classes or dynamically generate classes, directly in binary form. Provided common transformations and analysis algorithms allow to easily assemble custom complex transformations and code analysis tools.
aspectjrt-1.8.10.jar AspectJ 1.8.10 No Programming Support A seamless aspect-oriented extension to the Javatm programming language[1].
bcel-5.2.jar Apache Commons BCEL™ No Programming Support Gives users a convenient way to analyze, create, and manipulate (binary) Java class files (those ending with .class). Classes are represented by objects which contain all the symbolic information of the given class: methods, fields and byte code instructions, in particular. This dependency is used by FWD server and FWD client.
quartz-2.2.1.jar Quartz 2.2.1 No Scheduling A job scheduling library that can be integrated within any Java application.
FWD uses only the cron expression parser provided by this library.
bcpkix-jdk15on-150.jar BouncyCastle 1.5.0 No Security A lightweight cryptography API with implementations for KIX, CMS, EAC, PKCS, OCSP, TSP, OPENSSL.
bcprov-jdk15on-150.jar BouncyCastle 1.5.0 No Security A provider for the Java Cryptography Extension and the Java Cryptography Architecture.
dom4j-1.6.jar
xml-apis-1.3.04.jar
XML Processing Libraries No XML Processing A collection of libraries responsible for XML processing.
jetty-all-9.3.8.v20160314-uber.jar
javax.servlet-api-3.1.0.jar
Jetty 9.3.8 No Web UI and JavaScript bindings Provides HTTP server, HTTP client, and javax.servlet container
msv-core-2010.2.jar
stax2-api-3.1.1.jar
stax-utils-20070216.jar
xsdlib-2010.1.jar
relaxngDatatype-20020414.jar
woodstox-core-asl-4.2.0.jar
SAX support No XML services High performance event driven XML parser and schema validator.

Database Server

File Project and Version Modified Description
Java Development Kit OpenJDK 1.8 or the equivalent No A development environment for building applications and components using the Java programming language. The Oracle JDK 1.8 and OpenJDK 1.8 are well tested options. Versions of Oracle JDK 1.8.0_101 and OpenJDK 1.8.0_111 have been tested and have been found to work well.

Either the 32-bit or 64-bit version may be used. However, this is needed only for executing very small sub-expression fragments (calls to a single built-in function) which has very minimal memory requirements. For this reason, there is no strong requirement for the 64-bit JVM. Using a 32-bit JVM for this purpose will be faster and will use less memory. Use a 32-bit JVM if possible.

It is also highly recommended to limit the maximum heap size to 8MB. There is no reason to make it larger.
libjvm Java Native Interface (JNI) 1.8 No Java Native Interface (JNI) is a programming framework that enables Java code running in a Java Virtual Machine (JVM) to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in other languages such as C, C++ and assembly.* Used by PL/Java to launch JVMs.
pljava.jar
pljava.so
pljava.dll
PL/Java 1.5 No PL/Java is an add on module to the PostgreSQL backend. PL/Java is used to provide user defined functions written in Java for use with the PostgreSQL database. It falls into the same category as PL/SQL, PL/TCL, PL/Perl, and PL/Python. When installed, functions and triggers can be written in Java using your favorite Java IDE and installed into the database.

For information on building PL/Java library read Patching and Building Customized 3rd Party Libraries.
p2jspi.jar FWD Collation Services Yes FWD uses a custom implementation of java.text.spi.CollatorProvider to enable H2 to sort text data the same way Progress would.

Client

The FWD Client provides support for all of the interactive user-interface scenarios (ChUI and GUI) which might be expected. Due to the inherently fat-client design of the ABL, the FWD Client is also needed for a variety of use cases that might otherwise be surprising. This includes Appserver agents, batch mode clients and WebSpeed (when it is supported).

Some of these client configurations are started automatically by the FWD Application Server, using a native executable called the FWD Spawner or usually just referred to as the "spawner". The spawner always runs on the same system as the FWD Client, which may or may not be the same system as the FWD Application Server. The requirements below include those needed for a client system that includes the spawner.

When running the FWD Web Client there is the FWD Client which is executed and then all of the user interaction is actually handled by the browser, which can be on a separate physical system. See Browser Support for details.

File Project and Version Modified Purpose Description
Java Runtime Environment OpenJDK 1.8 or the equivalent No Java Runtime A runtime environment for executing applications and components using the Java programming language.

The core requirement for the JVM is that it must be compatible with Java 8.

Each FWD component (conversion, application server, client, user-defined functions running at the database) can use a different JVM. These can run on the same system or different systems. They can even run on a different operating system platform. There is no dependency between JVMs of different components, since they are separate operating system processes.

The following JVM versions have been well tested:

  • Oracle JDK 1.8 on Linux
  • Oracle JDK 1.8 on Windows
  • OpenJDK 1.8 on Linux
  • OpenJDK 1.8 on Windows

The specific versions of Oracle JDK 1.8.0_101 and OpenJDK 1.8.0_111 have both been tested and have been found to work well. Generally, it is safe to use any later version of the Java 1.8 platform.

The client does not generate Java code at runtime, which means that it is possible to use a JRE (runtime only, no development kit) instead of a JDK.

If your ABL application is using calls to native libraries, then the bitness of the installed JVM must match the bitness of these native libraries. You will not be able to execute calls into a 32-bit compiled native library from a 64-bit JVM or 64-bit native code from a 32-bit JVM.

If the legacy application is not dependent on native library calls, and if your operating system is 64-bit architecture, you may use either the 32-bit or the 64-bit JVM. On a 32-bit platform, only a 32-bit JVM is possible.

The application server process (JVM) is where the majority of working memory exists for each client (accessing the system). The actual memory used will depend on the queries, the block flow, recursion and other features of the original ABL. The converted application code is actually running in the common server process, which is different from how Progress ABL works.

By default, we recommend using the 32-bit JVM on the client for the following reasons:
  • The thin client does not need large amount of memory to run, this means that the heap can (and should) be limited in size.
  • The client does not process any data except for the displaying primitives received from server and any file-system or other OS related calls (which map to ABL features). The improved performance of a x64 built JVM is insignificant.
  • All things being equal, the memory footprint is greater on a 64-bit JVM as the pointers are twice as long as the pointers in a 32-bit JVM. Java uses pointers intensively as all references to objects (except for the scalars) are in fact pointers. This leads to the fact that a 64-bit JVM takes between 40% and 50% more memory on average than a 32-bit JVM.

Using the 32-bit version will greatly reduce the memory footprint and overhead of each JVM instance. On client systems where there will be large numbers of JVM instances (often at least one per user), this can accumulate into a significant savings.

From a heap perpective, the FWD Client needs enough memory to handle its windows, frames, widgets, streams and other ABL resources (and their contained data). These can be used in a deeply nested manner, which means that some programs can create many such resources simultaneously. However, even in such a case the memory requirements of the client tend to be quite limited.

For the above reasons, there is no strong requirement for the 64-bit JVM. Using a 32-bit JVM for this purpose will be faster and will use less memory. Use a 32-bit JVM if possible. Even applications with deeply nested UI processing can usually be run with max heaps of 16MB to 32MB.

axiom-api-1.2.13.jar
axiom-impl-1.2.13.jar
axis2-adb-1.6.2.jar
axis2-kernel-1.6.2.jar
axis2-transport-http-1.6.2.jar
axis2-transport-local-1.6.2.jar
httpcore-4.0.jar
mail-1.4.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.7.jar
AXIS2 support No Communication Apache Axis2™ is a Web Services / SOAP / WSDL engine.
commons-httpclient-3.1.jar
commons-codec-1.7.jar
Jakarta Commons HttpClient 3.1 No Communication Provides an efficient, up-to-date, and feature-rich package implementing the client side of the most recent HTTP standards and recommendations.
commons-logging-1.1.1.jar Jakarta Commons Logging 1.1.1 No Logging A library that uses the commons-logging API can be used with any logging implementation at runtime.
slf4j-api-1.7.5.jar
slf4j-jdk14-1.6.1.jar
Simple Logging Facade for Java 1.6.1 No Logging The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks.
libffi.so
libffi-6.dll
Portable Foreign Function Interface Library 3.2.1 No Native code invocation The libffi library provides a portable, high level programming interface to various calling conventions.*
aspectjrt-1.8.10.jar AspectJ 1.8.10 No Programming Support A seamless aspect-oriented extension to the Javatm programming language[1].
guava-14.0.1.jar Guava 14.0.1 No Programming Support Guava is a set of core libraries that includes new collection types (such as multimap and multiset), immutable collections, a graph library, functional types, an in-memory cache, and APIs/utilities for concurrency, I/O, hashing, primitives, reflection, string processing, and much more!*.
commons-lang-2.5.jar Apache Commons Lang 2.5 No Programming Support Provides a host of helper utilities for the java.lang API, notably String manipulation methods, basic numerical methods, object reflection, concurrency, creation and serialization and System properties.
libjvm Java Native Interface (JNI) No Spawner Java Native Interface (JNI) is a programming framework that enables Java code running in a Java Virtual Machine (JVM) to call and be called by native applications (programs specific to a hardware and operating system platform) and libraries written in other languages such as C, C++ and assembly.* When the spawner executable is used to launch FWD Client instances, it uses JNI (via libjvm) for spawning.
libncurses.so.5 ncurses library 5.7 (last available 5.9) Yes User interface A terminal-independent method for providing a character user interface. Required only on Linux/UNIX.

This project depends upon a customized version of this library (and a customized version of the associated TERMINFO database). Please see Patching NCURSES and Patching TERMINFO for the details.
batik-anim-1.8.jar
batik-awt-util-1.8.jar
batik-bridge-1.8.jar
batik-codec-1.8.jar
batik-css-1.8.jar
batik-dom-1.8.jar
batik-ext-1.8.jar
batik-extension-1.8.jar
batik-gui-util-1.8.jar
batik-gvt-1.8.jar
batik-parser-1.8.jar
batik-script-1.8.jar
batik-svg-dom-1.8.jar
batik-svggen-1.8.jar
batik-swing-1.8.jar
batik-transcoder-1.8.jar
batik-util-1.8.jar
batik-xml-1.8.jar
@xml-apis-1.3.04.jar

xml-apis-ext-1.3.04.jar
xmlgraphics-commons-2.0.jar
The Apache™ Batik Project 1.8 No User interface Batik is a Java-based toolkit for applications or applets that want to use images in the Scalable Vector Graphics (SVG) format for various purposes, such as display, generation or manipulation.*.
common-image-3.1.2.jar
common-io-3.1.2.jar
common-lang-3.1.2.jar
imageio-bmp-3.1.2.jar
imageio-core-3.1.2.jar
imageio-metadata-3.1.2.jar
TwelveMonkeys ImageIO 3.1.2 No User interface TwelveMonkeys ImageIO is a collection of plugins and extensions for Java's ImageIO.*
dojo-1.10.0-distribution.zip Dojo Toolkit 1.10.0 No Web UI and JavaScript bindings Open source modular JavaScript library (or more specifically JavaScript toolkit) designed to ease the rapid development of cross-platform, JavaScript/Ajax-based applications and web sites.*
jetty-all-9.3.8.v20160314-uber.jar
jetty-proxy-9.3.8.v20160314.jar
javax.servlet-api-3.1.0.jar
Jetty 9.3.8 No Web UI and JavaScript bindings Provides HTTP server, HTTP client, and javax.servlet container
dom4j-1.6.jar
xml-apis-1.3.04.jar
XML Processing Libraries No XML Processing A collection of libraries responsible for XML processing.

Browser Support

The FWD Web Client can be executed in the following minimum browser levels:

Browser Minimum Version
Chrome 30
Firefox 30
IE 11
Edge 12
Safari 8.0

#2674 has more details.

Obtaining the 3rd Party Code

All of the projects upon which FWD is dependent are licensed under permissive open source licenses.

Some of the projects are redistributed having as a bundle some other libraries. It is the case of license used for distribution of Java EE (Oracle Binary Code License Agreement for Java EE Technologies) that covers both JTA and the Servlet API. This license allows for redistribution under other licenses (see Supplemental License Term B), so long as (among other conditions), Oracle's rights under its Binary Code License are adequately protected under the license used for redistribution. Also it is the case of Apache license for Jetty distribution that covers JTA and Servlets API. Similarly, LGPL of Hibernate that covers C3p0, ANTLR, dom4j and ehcache. Therefore, these licenses (i.e., LGPL and Apache, respectively) are what we rely upon for these libraries. They allow our customers to redistribute these libraries for commercial purposes.

The following table lists each project referenced above and summarizes how it is licensed and how to obtain the code:

Project and Version License How to Obtain Observations
ANTLR 2.7.7 BSD License
http://www.antlr.org/license.html
http://www.antlr.org/download.html
Linux repositories (2.7.7)
Also distributed as bundle of Hibernate under LGPL license.
Asm 5.0.3 France Telecom Proprietary License
http://asm.ow2.org/license.html
http://asm.ow2.org/download/index.html
Linux repositories (3.3.2-1)
 
AspectJ 1.8 Eclipse Public License - v 1.0
http://www.eclipse.org/org/documents/epl-v10.php
http://www.eclipse.org/aspectj/downloads.php  
Apache Axiom 1.2 Apache License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0
https://ws.apache.org/axiom/download.html  
Apache Axis 1.6 Apache License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0
http://archive.apache.org/dist/axis/axis2/java/core/  
Apache Batik 1.8 Apache License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0
https://xmlgraphics.apache.org/batik/download.html  
Apache Commons BCEL™ 5.2 Apache License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0
http://commons.apache.org/bcel/download_bcel.cgi  
Apache Commons Beanutils 1.7 Apache License 2.0
http://commons.apache.org/beanutils/license.html
http://commons.apache.org/beanutils/download_beanutils.cgi  
Apache Commons Codec 1.7 Apache License 2.0
http://www.apache.org/licenses/
http://commons.apache.org/codec/download_codec.cgi  
Apache Commons Collections 3.2.2 Apache License 2.0
http://www.apache.org/licenses/
http://commons.apache.org/collections/download_collections.cgi  
Apache Commons Configuration 1.6 Apache License 2.0
http://www.apache.org/licenses/
http://commons.apache.org/collections/download_collections.cgi  
Apache Commons HTTP Client 3.1 Apache License 2.0
http://www.apache.org/licenses/
http://commons.apache.org/collections/download_collections.cgi  
Apache Commons Lang 2.5 Apache License 2.0
http://www.apache.org/licenses/
http://commons.apache.org/collections/download_collections.cgi  
Apache Commons Logging 1.1.1 Apache License 2.0
http://commons.apache.org/logging/license.html
http://commons.apache.org/logging/download_logging.cgi  
Apache HttpComponents 4.0 Apache License 2.0
http://commons.apache.org/logging/license.html
https://hc.apache.org/downloads.cgi  
Apache Lucene 4.0 Apache License 2.0
http://commons.apache.org/logging/license.html
http://archive.apache.org/dist/lucene/java/  
Apache Neethi 3.0.2 Apache License 2.0
http://commons.apache.org/logging/license.html
http://ws.apache.org/neethi/download.cgi  
Apache XML Graphics 2.0 Apache License 2.0
http://commons.apache.org/logging/license.html
https://xmlgraphics.apache.org/commons/download.html  
Apache xml-commons 1.3 Apache License 2.0
http://commons.apache.org/logging/license.html
http://xerces.apache.org/mirrors.cgi  
Apache XMLSchema 1.4.7 Apache License 2.0
http://commons.apache.org/logging/license.html
http://www.apache.org/dyn/closer.cgi/ws/xmlschema/  
Bouncy Castle 1.50 MIT License
http://www.bouncycastle.org/licence.html&#10;https://opensource.org/licenses/MIT
http://www.bouncycastle.org/latest_releases.html  
C3p0 0.9.5 GNU Lesser General Public License
http://www.gnu.org/copyleft/lesser.html
http://sourceforge.net/projects/c3p0/ Also distributed as bundle of Hibernate under LGPL license.
Code Generation Library 2.1 Apache License 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
http://sourceforge.net/projects/cglib/files  
Colt 1.2 Proprietary Open Source License
https://dst.lbl.gov/ACSSoftware/colt/license.html
https://dst.lbl.gov/ACSSoftware/colt/colt-download/releases/  
Dojo Toolkit 1.10 BSD license
https://dojotoolkit.org/license.html
https://dojotoolkit.org/download/  
dom4j 1.6 BSD style license
http://dom4j.sourceforge.net/dom4j-1.6.1/license.html
http://dom4j.sourceforge.net/dom4j-1.6.1/download.html Also distributed as bundle of Hibernate under LGPL license
ehcache 2.6 Apache 2.0 License
http://ehcache.org/about/license
http://sourceforge.net/projects/ehcache/ Also distributed as bundle of Hibernate under LGPL license
Guava 14.0 Apache License 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
https://github.com/google/guava/wiki/Release14  
H2 Database 1.4.192 MPL 1.1 or EPL 1.0
http://www.h2database.com/html/license.html
http://www.h2database.com/html/download.html  
Hibernate 4 GNU Lesser General Public License
http://www.gnu.org/copyleft/lesser.html
http://hibernate.org/orm/downloads/ The distribution license also covers other libraries among which: antlr, dom4j, C3p0, ehcache and Java Transaction API.
high-scale-lib 1.1.2 Proprietary Open Source License
https://github.com/stephenc/high-scale-lib/blob/master/LICENSE
https://github.com/stephenc/high-scale-lib  
HPPC 0.4.2 Apache License 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
http://sourceforge.net/projects/cglib/files  
Java Servlet API 3.1 Oracle Binary Code License Agreement
http://download.oracle.com/otn-pub/java/licenses/OTN_JavaEE_Legacy_Binary-Code-License_30Jan2012.txt
http://www.oracle.com/technetwork/java/javaee/downloads/index.html
Linux repositories
Also distributed as bundle of Jetty under Apache License Version 2.0
Java Transaction API 1.1 "Sun" ENTITLEMENT for SOFTWARE
http://download.oracle.com/otndocs/jcp/jta-1.1-classes-oth-JSpec/jta-1.1-classes-oth-JSpec-lice
http://download.oracle.com/otndocs/jcp/jta-1.1-classes-oth-JSpec/ Also distributed as bundle of:
• Java EE under Oracle Binary Code License Agreement license
• Hibernate under LGPL license
• Jetty under Apache License Version 2.0
JavaMail API 1.4 Oracle Binary Code License Agreement for Java EE Technologies http://download.oracle.com/otn-pub/java/licenses/OTN_JavaEE_Legacy_Binary-Code-License_30Jan2012.txt http://www.oracle.com/technetwork/java/javamail-1-4-140512.html  
Javassist 3.15 Triple license of the MPL, the LGPL, and the Apache License
https://github.com/jboss-javassist/javassist/blob/rel_3_15_0_ga/License.html
https://github.com/jboss-javassist/javassist/releases  
JBoss Logging 3.1 Apache License 2.0
http://commons.apache.org/logging/license.html
https://github.com/jboss-logging/jboss-logging/releases  
Jetty 9.1.2 Apache License 2.0
http://www.eclipse.org/jetty/licenses.php
http://www.eclipse.org/jetty/downloads.php
Linux repositories (6.1.24)
The distribution license also covers other libraries among which: Java Servlet API and Java Transaction API
Kryo 2.21 Proprietary Open Source License
https://github.com/EsotericSoftware/kryo/blob/kryo-2.21.x/license.txt
https://github.com/EsotericSoftware/kryo/releases  
Metrics 3.0.0 Apache License 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
http://metrics.dropwizard.io/3.1.0/getting-started/  
MSV 2010.2 BSD
https://msv.java.net/License.txt
https://msv.java.net/  
NCurses 5.7 BSD-like http://ftp.gnu.org/pub/gnu/ncurses
Linux repositories (5.9-4)
 
PL/Java 1.1 BSD License http://pgfoundry.org/projects/pljava  
Portable Foreign Function Interface Library (libffi) 3.2.1 MIT License
https://github.com/libffi/libffi/blob/master/LICENSE
http://sourceware.org/libffi/
PostgreSQL 9.4 PostgreSQL license
http://www.postgresql.org/about/licence
http://www.postgresql.org/download/
Linux repositories (9.1.5)
 
Quartz 2.2.1 Apache License 2.0
http://commons.apache.org/logging/license.html
http://www.quartz-scheduler.org/downloads/  
SLF4J 1.7 MIT License
https://www.slf4j.org/license.html
https://www.slf4j.org/download.html  
Spatial4J 0.3 Apache License 2.0
http://commons.apache.org/logging/license.html
https://locationtech.org/projects/technology.spatial4j/downloads  
TinkerPop Blueprints 2.4 TinkerPop License
https://github.com/tinkerpop/blueprints/blob/master/LICENSE.txt
https://github.com/tinkerpop/blueprints  
Titan 0.4.2 Apache License 2.0
http://commons.apache.org/logging/license.html
https://github.com/thinkaurelius/titan/wiki/Downloads  
TwelveMonkeys ImageIO 3.1.2 BSD 3-Clause License
https://github.com/haraldk/TwelveMonkeys/blob/master/LICENSE.txt
https://github.com/haraldk/TwelveMonkeys  
Woodstox 4.2 LGPL 2.1 and Apache License 2.0.
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html http://commons.apache.org/logging/license.html
http://wiki.fasterxml.com/WoodstoxDownload  
WSDL4J 1.6.2 Common Public License 1.0
https://opensource.org/licenses/cpl1.0.php
https://sourceforge.net/projects/wsdl4j/  

© 2004-2017 Golden Code Development Corporation. ALL RIGHTS RESERVED.