Interface JavaModuleDependencies


public interface JavaModuleDependencies

Java Module Dependencies

Note that if you are using GWT, GWT itself also has an Apache 2.0 license, however tools and test environments that you may use during development have different license (such as Eclipse - Eclipse Public License). Also, specific GWT widgets, not required by Smart GWT, have licenses different from core GWT (such as JFreeChart's LGPL license). See Google's summary of terms for details.

If you are using server scripting with the Javascript language, you need to use a JVM that includes a Javascript engine by default, or add one yourself. Java versions earlier than 6 do not include JSR223 support at all, so server scripting is not an option with those JVMs. Versions of the Oracle and OpenJDK JVMs from 6 to 14 inclusive include a JS engine by default - Rhino in Java 6 and 7, and Nashorn from 8 to 14 - so Javascript server scripting works out of the box with those versions. Oracle and OpenJDK JVMs from version 15 onwards do not include JS support automatically. See the Server Scripting documentation for more details of your options with this, but in short you can either:

  • Use GraalVM instead
  • Install the standalone open source implementation of Nashorn, simply by adding its JAR file to your project

Maven users should generally refer to the POMs bundled with the SDK, and installed for them by the official Isomorphic plugin for Maven. For others, the following is a short description of the functionality contained in each Smart GWT server JAR, and a link to the documentation listing its dependencies. Please refer to that documentation for more detail on the dependency graph, including version numbers, transitive dependencies, and licensing.

isomorphic_core_rpc This is the core Smart GWT module. It provides the RPC, DMI, and DataSource support. Please note that both commons-collections-3.x and commons-collections4-4.x are required and safe to include side by side in the CLASSPATH (different third party libs rely on one or the other). The same is true of commons-lang and commons-lang3.
Optional Dependencies
  • freemarker - if you're using the built-in support for REST via the RESTHandler servlet servlet
  • isomorphic_js_parser - if you're using the built-in support for REST via the RESTHandler servlet servlet with JSON payloads
  • xercesImpl - if you're using JDK < 1.5
  • javax.mail - if you plan to use the Mail messaging feature
  • javax.persistence - if you plan to use the metadata-from-annotations feature. Note that if you are using JPA, or a recent version of Hibernate, then you are probably already using this library.
  • poi and commons-math - if you plan to export datasets in Microsoft Excel 97 (xls) or 2007 (xlsx) formats.
  • poi-ooxml, poi-ooxml-schemas, and commons-compress - also needed if you plan to export data in Excel 2007 (xlsx) format
  • isomorphic_contentexport - if you plan to export to PDF format
  • isomorphic_jpa - if you plan to use BatchDS Generator (even if you are not using JPA, although the generated DataSources will not require JPA at runtime if you are not using JPA).
  • log4j - if you plan to use log4j logging (used by default)
  • slf4j-log4j12 - if you plan to use slf4j with log4j (for example), or any other slf4j bridge library depending on which logging framework will be used. See ServerLogging for information on server-side logging and how to configure it.
  • groovy - if you plan to use Groovy with the ServerScript feature. Note, we also recommend that you use Groovy as the evaluation engine if you intend to use Java as an inline scripting language. See the "Server Scripting" documentation.
  • commons-digester3 and commons-beanutils - if you plan to use Velocity Tools.
isomorphic_contentexport Provides support for PDF Export.
Optional Dependencies
  • batik-anim, batik-awt-util, batik-bridge, batik-css, batik-dom, batik-ext, batik-gvt, batik-parser, batik-script, batik-svg-dom, batik-util, batik-xml -

    These are all required to use RPCManager.exportImage(), or when using RPCManager.exportContent() to export a DrawPane or FacetChart only in IE8 or earlier, or if a DrawPane has a DrawImage which loads a cross-domain image.

    NOTE: Between iText 2.0.x and iText 2.1.x there is a binary (but not source) incompatibility that causes a server-side NoSuchMethodError when exporting, e.g., charts in Internet Explorer. This is a known issue with the Flying Saucer product that is fixed by using core-renderer-R8-isomorphic.jar and iText-2.1.7.jar in the lib-iTextAlternate/ directory instead of core-renderer.jar and iText-2.0.8.jar in the lib/ directory. To use iText 2.1.7 with the Server Framework, exclude lib/core-renderer.jar and lib/iText-2.0.x.jar from the application's classpath and instead add lib-iTextAlternate/core-renderer-R8-isomorphic.jar and lib-iTextAlternate/iText-2.1.7.jar.

isomorphic_tools Contains back-end logic for the "Admin Console" tool visible in the Developer Console, and also standalone from the SDK home page. Also contains the various data importers and exporters, and the server-side components of the BatchUploader.
isomorphic_cdi Support for DMI dispatches to Spring beans (via ServerObject.lookupStyle : "cdi").
isomorphic_spring Support for DMI dispatches to Spring beans (via ServerObject.lookupStyle : "spring").
isomorphic_spring_hibernate3 Support for Spring + Hibernate 3, see the Compatibility section of SpringIntegration for more details.
isomorphic_realtime_messaging Server support required for the Smart GWT Realtime Messaging Module. Install this if you're using this 'push' technology. For more information, see Messaging.
isomorphic_hibernate Contains support for Hibernate DataSources as described here: HibernateIntegration.
isomorphic_jpa Contains support for JPA DataSources as described here
isomorphic_sql The Smart GWT SQLDataSource.
isomorphic_autotest Support for automated testing and Continuous Integration
Optional Dependencies
  • jna - if testing with IE on Windows environments
  • servlet-api - needed only if you intend to run TestRunner from a standalone process (ie, from a normal Java program, not a webapp).

    However, it should not be deployed to a servlet container such as Tomcat or Jetty. The best case is that the file will be unused and a source of confusion for anybody looking at the webapp's library usage; the worst case is that it will conflict with the container's own implementation of the Servlet API.

isomorphic_js_parser A parser capable of reading a JSON byte stream and creating an in-memory Java object structure to match. Used by any mechanism that relies on JSON-style configuration. Examples include FileAssembly definitions in JSON format, any use of the rulesFile with a URIRegexFilter (Java Servlet) or subclass.
isomorphic_compression This is a part of the Network Performance Module. The isomorphic_compression module is required for dynamic and static compression of various assets delivered to the browser. For more information, see: Compression.
isomorphic_assembly This is part of the Network Performance Module. The isomorphic_assembly module is required for file assembly and stripping. For more information, see: FileAssembly.
isomorphic_scheduler Server-side libraries providing DataSource adapters for the Quartz API.
isomorphic_m2pluginextras A small collection of tools / utilities for use by Maven builds, Ant Scripts, and command line invocation.
isomorphic_spring_hibernate4 Support for Spring + Hibernate 4, see the Compatibility section of SpringIntegration for more details.