After a pretty long phase of development we are pleased to finally announce the release of Synthetica V3.0.0.
New Features
As you maybe know Synthetica V3 comes along with some great new features:
TunesMockup application with SyntheticaDark theme enabled
Modules
For being JPMS compatible the package structure in V3 was reorganized, which also means that V3 is no longer backward compatible. However, class names are unchanged so your preferred IDE should be able to easily update all package imports of your application. All modules of Synthetica V3 are listed below.
Synthetica core -> synthetica.base
Synthetica Dark theme -> synthetica.theme.dark
Synthetica Plain theme -> synthetica.theme.plain
Synthetica BlueLight theme -> synthetica.theme.bluelight
Synthetica AluOxide theme -> synthetica.theme.aluoxide
Synthetica Classy theme -> synthetica.theme.classy
Synthetica BlackEye theme -> synthetica.theme.blackeye
Synthetica Simple2D theme -> synthetica.theme.simple2d
Synthetica WhiteVision theme -> synthetica.theme.whitevision
Synthetica SkyMetallic theme -> synthetica.theme.skymetallic
Synthetica MauveMetallic theme -> synthetica.theme.mauvemetallic
Synthetica OrangeMetallic theme -> synthetica.theme.orangemetallic
Synthetica BlueSteel theme -> synthetica.theme.bluesteel
Synthetica BlackMoon theme -> synthetica.theme.blackmoon
Synthetica BlueMoon theme -> synthetica.theme.bluemoon
Synthetica SilverMoon theme -> synthetica.theme.silvermoon
Synthetica BlueIceMoon theme -> synthetica.theme.blueice
Synthetica GreenDream theme -> synthetica.theme.greendream
Synthetica BlackStar theme -> synthetica.theme.blackstar
Synthetica Standard theme -> synthetica.theme.standard
For proper execution without any errors/warnings make sure to pass the arguments below to the JVM. Note: When using SyntheticaAddons some additional arguments are required - for more details take a look at SyntheticaAddons 'README.TXT'.
--add-exports=java.desktop/sun.swing=synthetica.base
--add-exports=java.desktop/sun.swing.table=synthetica.base
--add-exports=java.desktop/sun.swing.plaf.synth=synthetica.base
--add-opens=java.desktop/javax.swing.plaf.synth=synthetica.base
--add-opens=java.desktop/javax.swing.plaf.basic=synthetica.base
--add-opens=java.desktop/javax.swing=synthetica.base
--add-opens=java.desktop/javax.swing.tree=synthetica.base
--add-opens=java.desktop/java.awt.event=synthetica.base
--add-exports=java.desktop/sun.awt.shell=synthetica.base
--add-exports=java.desktop/com.sun.awt=synthetica.base
--add-exports=java.base/sun.security.action=synthetica.base
Legacy Mode
Of course you are not forced to use the new module system. You can simply use our libraries as usual by specifying a classpath. However, in this case you have to use the JVM arguments below to avoid any errors/warnings.
--add-exports=java.desktop/sun.swing=ALL-UNNAMED
--add-exports=java.desktop/sun.swing.table=ALL-UNNAMED
--add-exports=java.desktop/sun.swing.plaf.synth=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.plaf.synth=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
--add-opens=java.desktop/javax.swing=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.tree=ALL-UNNAMED
--add-opens=java.desktop/java.awt.event=ALL-UNNAMED
--add-exports=java.desktop/sun.awt.shell=ALL-UNNAMED
--add-exports=java.desktop/com.sun.awt=ALL-UNNAMED
--add-exports=java.base/sun.security.action=ALL-UNNAMED
Alternatively, you can put the arguments into the manifest.mf file of your application by adding the attributes below - however, this will work only if your application is executed as jar file in legacy mode (classpath mode). Means as usual with specifying a class path instead of a module path. Note: Be aware that Web Start does not respect these entries - in this case you have to use the JVM arguments from above and add it to the j2se entry of your jnlp file.
Add-Exports: java.desktop/sun.swing java.desktop/sun.swing.table java.desktop/sun.swing.plaf.synth java.desktop/sun.awt.shell java.desktop/com.sun.awt java.base/sun.security.action
Add-Opens: java.desktop/javax.swing.plaf.synth java.desktop/javax.swing.plaf.basic java.desktop/javax.swing java.desktop/javax.swing.tree java.desktop/java.awt.event
Theme Classes
All theme packages have been reorganized for being JPMS compliant (no split-packages). A complete list of available theme classes can be found below. Note: In Synthetica V3 the core library (synthetica.jar) contains Synthetica core files only, no themes. Since V3 the standard theme is not any longer part of the core library!
de.javasoft.synthetica.aluoxide.SyntheticaAluOxideLookAndFeel
de.javasoft.synthetica.blackeye.SyntheticaBlackEyeLookAndFeel
de.javasoft.synthetica.blackmoon.SyntheticaBlackMoonLookAndFeel
de.javasoft.synthetica.blackstar.SyntheticaBlackStarLookAndFeel
de.javasoft.synthetica.blueice.SyntheticaBlueIceLookAndFeel
de.javasoft.synthetica.bluelight.SyntheticaBlueLightLookAndFeel
de.javasoft.synthetica.bluemoon.SyntheticaBlueMoonLookAndFeel
de.javasoft.synthetica.bluesteel.SyntheticaBlueSteelLookAndFeel
de.javasoft.synthetica.classy.SyntheticaClassyLookAndFeel
de.javasoft.synthetica.dark.SyntheticaDarkLookAndFeel
de.javasoft.synthetica.greendream.SyntheticaGreenDreamLookAndFeel
de.javasoft.synthetica.mauvemetallic.SyntheticaMauveMetallicLookAndFeel
de.javasoft.synthetica.orangemetallic.SyntheticaOrangeMetallicLookAndFeel
de.javasoft.synthetica.plain.SyntheticaPlainLookAndFeel
de.javasoft.synthetica.silvermoon.SyntheticaSilverMoonLookAndFeel
de.javasoft.synthetica.simple2d.SyntheticaSimple2DLookAndFeel
de.javasoft.synthetica.skymetallic.SyntheticaSkyMetallicLookAndFeel
de.javasoft.synthetica.standard.SyntheticaStandardLookAndFeel
de.javasoft.synthetica.whitevision.SyntheticaWhiteVisionLookAndFeel
JPMS Integration
Generally you only have to add the modules of the required themes to your application. However, by not using the static clause all specified theme modules are mandatory to run your application. Which means at compile and run time.
With using the static clause all specified theme modules are optional at run time. However, in this case you have to tell the JVM which of the theme modules should be added to the module graph e.g. by using --add-modules.
Example:
module synthetica.demo
{
requires synthetica.base;
requires static synthetica.theme.aluoxide;
requires static synthetica.theme.blackeye;
requires static synthetica.theme.blackmoon;
requires static synthetica.theme.blackstar;
requires static synthetica.theme.blueice;
requires static synthetica.theme.bluelight;
requires static synthetica.theme.bluemoon;
requires static synthetica.theme.bluesteel;
requires static synthetica.theme.classy;
requires static synthetica.theme.dark;
requires static synthetica.theme.greendream;
requires static synthetica.theme.mauvemetallic;
requires static synthetica.theme.orangemetallic;
requires static synthetica.theme.plain;
requires static synthetica.theme.silvermoon;
requires static synthetica.theme.simple2d;
requires static synthetica.theme.skymetallic;
requires static synthetica.theme.standard;
requires static synthetica.theme.whitevision;
}
Only the themes you want to use at run time will be added to the modules graph with --add-modules. In the example below it's the SyntheticaDark theme.
java --add-exports=... --module-path synthetica.jar;syntheticaDark.jar;syntheticaDemo.jar --add-modules synthetica.theme.dark -m synthetica.demo/de.javasoft.synthetica.demo.Demo
System Requirements
Synthetica V3 requires Java 9 or above - however, in case you have to support Java 6/7/8 and Java 9 you should consider to use Synthetica V2 in classpath mode only.
Product Links