The New Java-Shell Website
Its been quite a while since the first iteration of this site! Its been down for quite a while, and I wanted to update it and bring things back up to the standards they once were! I’m planning on this site being the wiki/forum for all Java-Shell related projects.
Currently there are 3 projects active, JSH (of course), OpenJVID, and jNodeGraph.
JSH
JSH has and always will be the largest of the 3, however I’ve had to pivot to other projects to keep my interest in development alive, as banging my head away on one project has proven fruitless. That said, JSH currently features an extensible API in the form of module insertion (described on the JSH page), as well as what I’ve been currently calling “Abstract Serialization.” In basic terms, a class and all of its respective dependencies are “Quantized”, or broken into byte arrays, sent over to other nodes in the same JSH cluster, and then “Realized” into an active class object. The primary object which endures this process is any extension of the JProcess class. When a JProcess class that is actively running on one node is determined to be eligible for dispatch to another, the process is paused and all of its eligible data serialized. This serialized data, along with the “Quantized” data in the form of byte arrays retrieved using Java’s Reflection system, are later “Realized” together as a close analogue of the original JProcess. This process is then resumed on its current node.
While the mainstay of JSH is its clustering capability, it also includes an aforementioned module insertion system, which allows for direct extension of JSH. Modules are loaded on JSH startup, and live within their own Java Thread for thread safety, and to avoid lockups on system load. Modules *can* be loaded after system load by using ModuleManagement’s hotLoad() method, however if the modules main entrypoint is flawed, this can crash JSH. This is to be negated in a further update, however in its current state, is a known flaw.
Please see the JSH page for a more in depth description of the project, as well as links to its Github page.
OpenJVID
OpenJVID has been my most recent project, which relies on jNodeGraph for its front end UI, and is planned to be compatible with JSH in a future update. OpenJVID is a real-time video transcoding/processing platform with a UI based on “Open Architecture Digital Signal Processors” but featured for Video rather than Audio. OpenJVID relies on an internal private project of mine aptly named JVID, which is the core video transcoding and processing library. JVID uses OpenCV, FFMpeg, NDI, and GStreamer libraries to perform real-time transcoding of video streams, and relies on C++/Java to perform video processing such as multi-viewing, facial detection and tracking, as well as facial auto-framing.
This project also includes 2 custom video codecs, based on the QOI (Quite OK Image) format and derivative QOY (QOI but based on YCbCr instead of RGB) format. Currently, only the QOYV codec is available on OpenJVID, however both exist in the JVID transcoding library. Its worth noting that QOIV’s current efficiency is sub-standard, and until proven otherwise will not be included in OpenJVID.
Please see the OpenJVID page for more information, and a link to the Github page.
jNodeGraph
jNodeGraph is a node based flow-chart style UI. When links are made between JNodeComponents (UI Nodes) a linkage event is fired, which can be used to perform a variety of tasks. The JNodeFlowPane is a Swing object which manages all JNodeComponents and performs linkages as well as basic component selection highlighting.
Please the jNodeGraph page for more information, and a link to the Github page.