This is an open community-driven discussion about J FE (front end) for J701 beta. The format is: each major section is a separate topic (when possible deriving from the initial document), with subsections and deliberations. Please use links for Forums, Wiki pages and J Docs.
- J Engine (JE)
- the pure J part of J system.
- J Front End (JFE)
- a mid-level subsystem and its API for user interface. FEs differ by UI type (console, graphical, web), toolkit (or underlying framework, such as GTK, Windows GDI, Mac Cocoa, Java, .NET, etc.). FEs share the same JE interface and provide the same high-level interface to J programs, in particular to IDE.
- Window Driver (WD)
- an interface provided by JFE to J programs for working with GUI (creating and controlling windows and controls and handling events). Depending on implementation there is Jwdw (Windows) in C++ using GDI and Jwdp (Portable) in Java using Swing.
- Integrated Development Environment (IDE)
- a subsystem to facilitate development, consisting of such components as Session Manager, Script Editor, Code Browsers, Debugger, Project Manager, Package Manager, Labs Framework, Demos Framework etc.
J701 will replace the foreign JFEs (Jwdw and Jwdp) with native JFEs, written completely in J. The following benefits are sought
- provide a more portable JFE infrastructure
- cover more UI types (web)
- JFE sources (in J) are open and community supported
- leverage more UI components (tabs, syntax highlighting, etc.)
- cross-platform single core underlying framework (GTK)
- possibility to provide JFE interfaces to alternative underlying frameworks with more cohesive host OS look-and-feel (Mac Cocoa, Vista Aero etc.)
In the initial document, Graphical JFE is synonymous with GTK, which is contrasted to the console and web JFEs.
However it may make sense to provide an additional layer of abstraction: a common Graphical JFE layer and toolkit-specific code. Then GTK interface will only be a particular module for GTK alongside similar modules for Mac Cocoa, Vista Aero and other toolkits. This is similar to the media/platimg approach. See beta/2009-October/003373.
Similar to gl2 and gl3, the WD will be implemented in J against the common JFE API. Then depending on the platform and available toolkit bindings, a particular underlying framework will be used.
The existing Jwdw will be split into the toolkit interface and continue to exist in the re-engineered form. Thus Pocket PC can be supported "natively".
It might make sense to consider external debugger, when one session of J run the debugger UI, whereas the debugged is another session.
The challenge that debugger may not be available when JFE is being developed may be overcome by this approach: different sessions may have different JFEs.
External debugger may be handy for server-side debugging of a J web server (such as JHP) or a web-based JFE.
Add your section