Skip to content

A generalized plugin library for the Javac compiler

License

Notifications You must be signed in to change notification settings

exoad/meta_javac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

JMCC - JackMeng Configurable Compiler (4j)

DORMANT REPO: I am not currently working on this project due to other projects conflicting with my workload

[WARNING]
It is highly recommended to not use anything from the "com.sun" packages due to them being
very vendor specific and thus this standalone plugin will try its best to avoid doing
so through the usage via "javax.lang" and the ToolsAPI. However, for older and less
specific plugins, "com.sun" will be utilized.

Furthermore, due the prevalence of different versions under the "javax.lang" module,
all specified versions & utility class  will be written and included:
      1. 14        -> Files prefixed with "se14_"
      2. 9         -> Files prefixed with "se09_"
      3. 8         -> Files prefixed with "se08_"
Note: 6,7 are not supported due to them being slightly obsolete and the dire preference
to stay up to date.
Thus different SDK versions will require different build versions and so force.

The reason being that many compiler related libraries were removed from the unreliable "com.sun.*" packages.
One such JAR that is crucial to make a functional plugin is required from "tools.jar" under
"$JAVA_HOME/lib/" which has been unfortunately removed since Java 9 (messed up everything).

If you would like to tag along with my development environment, you may follow with the
below specifications:

            JDK Base : OpenJDK Build 2022-07-19
            JDK Vendor : Adoptium (Eclipse) Temurin [https://adoptium.net/about/]
            JDK Version : 17.0.4 (build 17.0.4+8)


This repository contains a set of plugins that I have created for the Javac compiler. Much of these
plugins aim to increase functionality and the ability for the user to define certain functionalities
based on certain compilation params. However, there are certain limitations within the compiler
itself that can also influence how things can work and how certain pragmas can be called be
between source and compiler. For example, you cannot simply leech a macro find and replace tool
onto Javac's annotation parsing phase, instead you most definitely need to either:
      1. Write a parser that handles the macros beforehand and then invokes the Javac compiler
      2. Write a precheck for Javac that is ran in the first cycle of the Javac compilation life
         cycle. [This however, heavily depends on Javac implementation]

In general, you should not depend on these plugins to make Java much more friendlier, instead, it
is probably far less problematic to use a different language. Additionally, plugins here can
break at any time due to inconsistent source file versions and other different stuffs between
JDK providers and Javac implementations.


== File prefixing legend ==
This legend adds some prefixes that are native to this project and does

"se14"
      For files relating to the specific SE Release Version 14
      - Highly environment specific

"se08"
      For files relating to the specific SE Release Version 8 (1.8)
      - Highly environment specific

"se09"
      For files relating to the specific SE Release Version 9
      - Highly environment specific

"csun"
      For files relating to the specific module "com.sun" and utilizes its defunct routines
      - EXTREMELY ENVIRONMENT & COMPILER SPECIFIC

"_"
      Standard annotation that is checked and validated by this plugin

"__"
      Internal to external interfaces that are exposed so certain functionalities like being
      able to be recognized as a Javac compiler etc..

About

A generalized plugin library for the Javac compiler

Topics

Resources

License

Stars

Watchers

Forks

Languages