Giter VIP home page Giter VIP logo

meta_javac's Introduction

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..

meta_javac's People

Contributors

exoad avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.