Configured the ProcessingLibraryPlugin to use Java toolchain version 17 via JavaPluginExtension. Also marked the 'createLibrary' task in dxf library build script as deprecated, recommending use of the 'bundleLibrary' task from the plugin.
Add custom Gradle plugin for Processing libraries
Introduces a new Gradle plugin module for Processing libraries, including plugin implementation, extension, and configuration classes. Updates the DXF library to use the new plugin and configuration DSL, and adjusts project settings to include and manage the plugin build.
Add bundleLibrary task and update library plugin
Introduces BundleLibraryFilesTask to handle bundling of Processing library files, replacing the removed CollectLibraryFilesTask. Updates ProcessingLibraryPlugin to register the new bundleLibrary task, which collects the jar, runtime dependencies, examples, javadoc, and generates library.properties. Also adds a 'name' property to ProcessingLibraryConfiguration and comments out the old createLibrary Copy task in dxf's build script.
Refactor library bundling logic into task class
Moved the logic for bundling Processing library files from the plugin registration into the BundleLibraryFilesTask class. The task now takes a ProcessingLibraryConfiguration and handles copying jars, dependencies, examples, javadocs, and generating library.properties internally. Also made ProcessingLibraryConfiguration serializable for safer Gradle usage.
Update library version handling and add zip task
Changed ProcessingLibraryConfiguration.version from String to Int for stricter versioning. Added a zipLibrary Gradle task to package the library folder as .zip and .pdex archives. Updated dxf library build script to use new version format and incremented version to 1.
Add installLibrary task and update DXF build config
Introduces an installLibrary Gradle task to automate Processing library installation using user preferences. Also re-enables the createLibrary copy task in the DXF library build script and removes minRevision/maxRevision constraints from the library configuration.
Only run when actually running the task -.-
Refactor library author metadata handling
Changed the authors field in ProcessingLibraryConfiguration from a list of names to a map of author names to URLs, updating related code to format authors as markdown links. Updated the DXF library build configuration to use the new authors map structure. Added documentation comments to ProcessingLibraryConfiguration properties for clarity.
The createLibrary tasks in dxf, pdf, and serial modules now rename the output JAR files to dxf.jar, pdf.jar, and serial.jar respectively as Processing does not expect the version name to be in the library jar
Minor bit of cleanup in the ant scripts around the build src and target on javac, enabling use of Java 11 language features within processing itself. Note that the build is sustained on either 1.8 or 11 in terms of lanugage features but the code is no longer compatible with the Java 8 runtime due to backwards-incompatable changes made starting in Java 9.
Moves to Java11 and OpenJDK via AdoptOpenJDK within the processing4 train using a squash of sampottinger processing fork's java11 branch.
**Primary required changes:**
Some changes directly support OpenJFX / OpenJDK 11:
- Response to image loading changes caused by [JEP 320](https://openjdk.java.net/jeps/320)
- Use of jmodules as necessitated by [JEP 261](https://openjdk.java.net/jeps/261)
- Reponse to largely changed file paths caused by [JEP 220](https://openjdk.java.net/jeps/220).
- Modifications in build system related to AdoptOpenJDK and Java 11 which have a different naming structure for downloads.
- Allowing use of non-Oracle Java within internal Processing checks.
**Secondary required changes:**
There were some secondary required changes that impacted the usability of Processing after having moved to OpenJFX / OpenJDK 11:
- Removal of com.apple.eawt calls related to [JEP 272](http://openjdk.java.net/jeps/272)
- Response to HiDPI support on Windows and Linux in [JEP 263](https://openjdk.java.net/jeps/263)
- Removal of `java.ext.dirs`. Would be forced by [JEP 220](http://openjdk.java.net/jeps/220).
- Due to bugs on Windows, updated the JNA jars.
- Changes in downloader build tasks to support AdoptOpenJDK and OpenJFX.
- Updated org.eclipse.* / equinox jars.
- Some optimization around size of distribution.
- Update of AppBundler.
- Some changes in formulation of classpath and modifications in PreprocessingService given [JEP 261](https://openjdk.java.net/jeps/261).
**Incidental changes:**
This was (ahem) a bit of a larger PR with the above modifications. So, I wanted to introduce automated tests when possible and convenient along with a few changes for platform sustainability in order to support development:
- Addition of cross-building capability (!) made possible by AdoptOpenJDK.
- Addition of mockito for testing.
- Upgrade of junit.
- Addition of ant-contrib.
- Standardized nomenclature around JRE / JDK in `build/build.xml`
- Deduplication of code in `jre/build.xml`.
- Addition of JavaDoc in a few places.
- Some refactoring of PImage / Shape to support increased testing and readability in image manipulation code.