Awesome
RelProxy
RelProxy is a simple Java and Groovy hot class reloader for Java and Groovy providing transparent compilation and class reload on the fly, and scripting support and shell of pure Java code.
News
- 2016-3-16 v0.8.8 Released. Support of static final fields in reloadable proxies. Release Notes
- 2015-10-6 DZone article: Improve Productivity With RelProxy for Java. About embedding RelProxy in your own Java framework.
- 2015-10-1 v0.8.7 Released. Some improvement needed when embedding RelProxy Java using the scripting API. Release Notes
- 2015-6-12 v0.8.6 Released. Support of class reloading of inner classes including anonymous. Release Notes
- 2015-6-12 v0.8.5 Released. Improved performance when checking source changes and no change is detected. Release Notes
- 2015-2-17 v0.8.4 Released. Added workaround to support Liferay (6.2 tested) Release Notes. New Liferay 6.2 example using RelProxy.
- 2015-1-23 v0.8.3 Released. First release in JCenter and Maven Central Release Notes
- 2015-2-5 Java Hot Class Reloading with RelProxy in Development Mode, a GWT Example JavaLobby article
- 2015-1-30 Slides in English and video in Spanish of the RelProxy presentation in MadridJUG on January 28!
Download Binaries and Docs
Distribution file includes binaries, examples, manual and javadocs.
Artefacts are uploaded to JCenter (direct) and Maven Central (direct) repositories
Maven:
<groupId>com.innowhere</groupId>
<artifactId>relproxy</artifactId>
<version>(version)</version>
<type>jar</type>
Overview
RelProxy is a simple Java and Groovy hot class reloader for Java and Groovy providing transparent compilation and class reload on the fly, and scripting support and shell of pure Java code.
RelProxy is:
-
A simple Java and Groovy hot class reloader for Java and Groovy providing transparent compilation and class reload on the fly with no need of a bootstrap class loader agent and avoiding context reloading. Reloading happens only in memory. Class reloading can be used in development phase and optionally in production (if source code can be uploaded to production).
-
A scripting environment to execute Java code snippets the same as a shell script. There is no new language, is Java compiled on the fly, code in the initial archive can call to other normal Java files. Optionally .class can be saved in a cache to provide the fastest "scripting" language of the world.
-
Execution of Java code snippets in command line (no need of packaging into an archive).
-
A simple shell to code, edit and execute code snippets in Java interactively.
-
JSR 223 Scripting API implementation for "Java" as the target scripting language. You can embed and execute Java code as scripting into your Java program.
In case of Java "scripting", there is no a new language, is pure Java code with compilation on the fly.
In spite of RelProxy is a general purpose tool it was conceived for ItsNat web framework to provide hot class reload in development time... and if you want also in production. RelProxy is standalone and has no dependency on ItsNat.
RelProxy Manual explains how to configure and use RelProxy in NetBeans and Eclipse avoiding class reloading (of course other IDEs are possible).
There are several examples of how to use RelProxy with most popular Java web frameworks ready to run into RelProxy Examples repository. Also ItsNat Experiments includes an ItsNat example using NetBeans with Ant, to reload Java and Groovy code. The most complex example is relproxy_test_itsnat created for internal testing.
Besides fast and custom Java (and Groovy) class reloading, RelProxy provides a Java shell scripting environment to execute:
-
A pure Java archive packaged like a shell script file with no need of previous compilation, compilation is done on the fly and optionally .class can be saved in a cache to provide the fastest "scripting" language of the world. Code in the initial archive can call to other normal Java files, again with compilation on the fly and optional compilation caching as .class files. Example 1 and example 2 or just a conventional Java source file (yes you can execute a conventional JavaSE application from source code).
-
Execution of Java code snippets in command line (no need of packaging in an archive). Example.
-
Interactive console to edit and execute Java code (ever compilation on the fly). Example of launcher
Finally RelProxy implements the official JSR-223 Java Scripting API as found in Java 1.6 for "Java" language. By using this API you can embed Java as any other scripting language in your Java code.
Yes, Java is also a dynamic scripting language with no need of manual compilation, and it is extremely fast and robust.
Online Docs Last Version
Examples
See the GitHub repository RelProxy Examples
Questions and discussions
There is a Google Group for RelProxy.
Bug Reporting
Use this GitHub project.
Articles/Blogs/Presentations
-
Oct 6,2015 Improve Productivity With RelProxy for Java. About embedding RelProxy in your own Java framework.
-
Feb 19,2015 No longer virgin, uploaded my first jar to Maven Central, and it was not nice. JavaLobby. Bintray Quote.
-
Feb 5,2015 Java Hot Class Reloading with RelProxy in Development Mode, a GWT Example
-
Jan 28,2015 Slides in English and video (youtube) in Spanish of the RelProxy presentation in MadridJUG
-
Dec 31,2014 RelProxy v0.8.1 reduce el numero de redeploys en GWT-RPC y otros Java web frameworks Published at javaHispano
-
Feb 15,2014 v0.8 announce at JavaLobby
-
Feb 12,2014 v0.8 announce at javaHispano