Progress:
| General |
Enhancements and fixes in EDT 0.8.2. |
| General |
Milestone 4 features 50 fixes and enhancements. See the full list. |
| Language |
The following language changes are in place:
t time; Syslib.writeStdOut((t.hourOf() < 12) ?? "It is before noon" : "It is after noon"); |
| Generation Validation |
Generation time validation was added so that the generators can provide error messages on parts and stereotypes that are not supported by a given generator. For example, the JavaScript generator does not support generation of programs. Likewise, the Java generator does not support the generation of a handler with the type RuiHandler. These examples will now result in an error being placed on the parts during generation. Previously, the generators ignored these parts and no notification was given. Generator extensions can add parts and stereotypes that are supported. |
| Content Assist |
Content assist is once again available. |
| General |
Milestone 3 features 12 fixes and enhancements. See the full list. Please note that recent changes might require that you migrate your EGL applications. For details, see the differences between EDT 0.8.2 and EDT 0.8.1. |
| Language |
The following language changes are in place:
|
| Extension |
The EGL Extensible Compiler is implemented:
|
| Content Assist |
As a result of the extension changes, content assist is unavailable in the M3 release. The capability will return. |
| General |
Milestones 1 and 2 feature 9 fixes and enhancements. See the full list. This delivery is the first that is based on work stored in the Git version-control system. In addition, the const keyword is now applicable to any variable declaration. |
| General |
Enhancements and fixes in EDT 0.8.1. |
| General |
Milestone 3 features 110 fixes and enhancements. See the full list. |
| Mobile |
EGL now supports mobile computing. For details on getting started, see Preparing to develop a mobile application. |
| SOA |
You can now access different kinds of back-end logic in a similar way, whether the logic is a host program or a service. For details on the new approach to service access, see the following overview: Service bindings |
| IBM i |
Two changes improve the existing support for IBM i:
For updated details on how to access an IBM i program, see the following overview: Support for IBM i |
| IDE |
You can quickly access the EGL system definitions that were made available in Milestone 2:
|
| General |
94 fixes and enhancements were made in milestones 1 and 2. See the full list. |
||||||||||||||||||||||||
| EGL type definitions |
After you have created or imported an EGL project, you can review the provided type definitions by expanding EDT System Libraries: |
||||||||||||||||||||||||
| forEach statement |
You can now use the forEach statement to process each element of a list in turn. For example, assume that the following Record type is available: Record MyRecordType myString String; myInt Int; end The following code iterates through a list of that type:
myList MyRecordType[];
myList.appendElement(new MyRecordType{myString = "01", myInt = 1});
myList.appendElement(new MyRecordType{myString = "02", myInt = 2});
myList.appendElement(new MyRecordType{myString = "03", myInt = 3});
forEach (myElement MyRecordType from myList)
SysLib.writeStdOut(myElement.myString + " " + myElement.myInt);
end
The output is as follows: 01 1 02 2 03 3 As was already true, you can use the forEach statement to process an SQL result set. |
||||||||||||||||||||||||
| Bitwise operators |
Several bitwise operators are now available:
|
||||||||||||||||||||||||
| Numeric literals |
You can now specify the type of a numeric literal by appending a character to the literal. The next table shows the EGL type system for numeric literals.
|
||||||||||||||||||||||||
| Simple types |
EGL now includes TIME and limited STRING:
|
| General |
Enhancements and fixes in EDT 0.80. |
| General |
140 fixes and enhancements were made in this milestone. See the full list. |
| SOA |
The way you invoke a dedicated service is now consistent with the way you invoke a REST or EGL REST-RPC service. Specifically, you define a binding variable of type HttpProxy and do not declare a DedicatedService annotation. For details on service access, see the following web page: http://wiki.eclipse.org/EDT:Resource_Binding_Services |
| IDE | A new external type wizard helps you to expose Java classes and interfaces to your EGL logic. The initial keystrokes are New > Other > EGL > External Type. Another new capability lets you create access logic that is based on one or more database tables. Each table is accessed separately, and the overall access code is stored in a Service or Library type. The initial keystrokes are one of the following two sequences: New > Other > EGL > Service; or New > Other > EGL > Library. |
| Rich UI | Rich UI support for Dojo is now based on Dojo toolkit version 1.7. To provide better download performance, Rich UI has begun to reduce the size of the downloaded code and has begun a transition to Asynchronous Module Definition (AMD), which is a technology for loading handlers asynchronously. The AMD solution has no effect on application development. For details on that technology, see the following web page: http://dojotoolkit.org/features/ The downloaded code is also obfuscated. |
| Language | String is now a reference type rather than value type. In existing applications, the change has no effect on the following values:
|
| SQL support | As before, the GeneratedValue annotation identifies a record or handler field for which the corresponding table column receives a value from the database management system. The assignment to the table column occurs when an add statement runs. The change is as follows: the add statement now places the DBMS-generated value into the field of the record or handler, making the value available to your code. |
| Java runtime code | The size of the jar file used during application run time is 92% smaller after a decrease from ~6 MB to ~0.5 MB. |
| Generator extension | The team began to define Eclipse extension points for creating new generators and for contributing to existing generators. |
| General |
60+ fixes and enhancements were made in this milestone. See the full list. |
| New Syntax for Resource Bindings and Call Statement |
|
| JNDI Support for Database Access |
JNDI allows for a data source configuration to be managed separately from the application (typically by the application server). JNDI also allows for fast database access across multiple users. Starting with the M2 release, you can configure a resource binding to use a logical JNDI name. For details on several changes related to setting up an SQL database binding, see the Resource Binding Databases page. |
| IBM i Support |
As an EGL developer, you can access IBM i called programs, as well as procedures in IBM service programs. For more information, see the Support for IBM i page. |
| IDE |
Other changes affect your interaction with the IDE:
|
| RUI Widget User Data Support |
Arbitrary user data of any type (primitive, record, array, Dictionary, etc.) can now be stored and accessed on a RUI widget. This allows for storing a value and accessing it later in an event handling function (for example). The new APIs are RUIWidget.setUserData(any) and RUIWidget.getUserData(). |
| General |
60+ fixes and enhancements were made in this milestone. See the full list. |
| Content assist |
EGL content assist has been enhanced to show variables, fields, functions, and types with related details and icons that illustrate the kind of information being presented:
|
| Rich UI |
EGL Rich UI now supports the following capabilities:
|
| General |
Hundreds of fixes and enhancements were made since M3. See the full list. |
| Generators | Java and JavaScript Generators are functionally complete. Additional language compliance testing continues. |
| EGL Language | Language Overview
|
| Standard widget support | This library includes standard HTML widgets, such as button, text field, text label, grid layout, and data grid. Also included are core utilities, such as MVC, history, and infobus (message broadcasting). The default style for these widgets matches the Claro theme from the Dojo Toolkit. |
| Dojo 1.6 widget support | This library provides support for 30+ Dojo widgets, including Button, Calendar, Dialog, and Tree. Dojo support can be added to a project in the New EGL Project wizard when the project is created. The remote version of this library references a hosted Dojo toolkit (Google.com) and requires internet connectivity during development. The Dojo library files are not imported into the workspace and not deployed with your applications. The remote version of the library can be selected in the New EGL Project wizard by selecting the drop down that appears in the Version column for the Dojo widgets. |
| Dedicated Services (JavaScript Only) | Dedicated services are EGL services that can be thought of as server-side extensions to a Rich UI application. Dedicated services are generated as Java, deployed with the Rich UI handler, and do not require any additional configuration (e.g. specification of an end-point URL). To use,
apply the @dedicatedservice annotation to a service variable declaration in a Rich UI handler.
|
| REST Services (JavaScript Only) | EGL services can now be generated and deployed as EGL REST-RPC (JSON) web services and invoked from EGL applications or other EGL services. |
| XML and JSON (JavaScript Only) | Support for converting data to and from XML and JSON is now available as part of the JsonLib and XmlLib Libraries. |
| JavaScript Debugging | EGL code generated as JavaScript can be debugged using the standard Eclipse debug tools. To debug, right click on a Rich UI handler file and select Debug As > EGL Rich UI Application. This will launch the handler in an external browser. |
| Test Server | An embedded Web Server based on Jetty that is responsible for executing EGL Services within the IDE (e.g. EGL Debugger, Rich UI Visual Editor, etc). A test server instance is provided for each EGL project, and a server will remain resident until either the workspace is closed or the server is terminated manually. Each test server instance is automatically managed by the workspace, with updates to EGL source being hot-swapped where possible.
|
| EGL Deployment Descriptor | An EGL deployment descriptor contains settings that control how an application is deployed. For example, the deployment descriptor for a project that is configured with Java support can be configured to generate EGL services as REST services. |
| Default deployment descriptor | When a new project is created, a deployment descriptor is automatically created in the root EGL Source folder of the project, and this deployment descriptor is configured as the default for the project. To change the default deployment descriptor for a project, right click on the project and select properties > EGL Default Deployment Descriptor. |
| Service Deployment | EGL services can now be generated and deployed as EGL REST-RPC (JSON) web services and invoked from EGL applications or other EGL services. |
| Rich UI Application Deployment | On deploy, EGL Rich UI handlers are generated as HTML and deployed into a standard Dynamic Web project. By default, all Rich UI handlers in a project are deployed with the default EGL deployment descriptor file for the project. |
| Resource bindings | Resource bindings are specified in an EGL deployment descriptor file, and are used to specify runtime connection information for REST service invocations and SQL database access. When entering a SQL database resource binding, a workspace connection can be specified using a database connection, which will result in the information being loaded from the connection at runtime. Workspace connections are only available in the IDE, and are replaced with information from the database connection during deployment. |
| EUnit Test Framework | The EUnit test framework provides a simple way to write and run unit tests for the EGL language. Example Test Case Example Results
|
| General |
Hundreds of fixes and architecture/infrastructure enhancements were made in this milestone. See the full list. |
| EGL model |
A serializable model, created during compilation, which represents an EGL part. Java APIs are provided for creating, reading, and manipulating instances of the model. Serializable to XML or as binary objects is currently available, with infrastructure to support serialization to other formats. |
| Generator framework |
An extensible code transformation framework is in place for building and creating generators that act on objects created during compilation or programmatically.
|
| Java Core Generator |
Supports the transformation of EGL into Java. Not fully implemented, but basic functions in place. Simple example of Java created from EGL:
|
| JavaScript Core Generator |
Supports the transformation of EGL core into JavaScript. Not fully implemented. |
| Perspective |
The EGL perspective provides quick access to common EGL actions (new project, new source file, etc), quick access to related perspectives (web, Java, etc), and shows a set of views commonly used during development of EGL applications (Project Explorer, Outline, etc).
|
| Project explorer view integration |
Projects configured with EGL support (either new projects or projects with EGL support added) appear in the Project Explorer view. EGL source files are organized by package and commonly used actions are available on the context menu.
|
| EGL new project wizard |
The EGL New Project wizard (File > New > EGL > New Project) creates a project configured with EGL support. By default, new projects use the default compiler and generator specified in the workspace-level preferences.
EGL support can be added to any existing project via the Configure > Convert to EGL Project action on the context menu of the Project Explorer view.
|
| Compiler and generator preferences |
EGL compiler and generator preferences can be set in the workspace-level preferences page (Window > Preferences > EDT > Compiler)
Compilers and generators can be contributed to the IDE via extension points. A generator gets associated with a compiler, for example the base Java generator belongs to the EDT compiler and can be enabled for any projects using the EDT compiler. Currently generators are provided for Java and JavaScript. |
| Source editor |
Text editor for EGL source files. Provides the basics of content assist and color highlighting. Common, global actions (Undo, Save, etc) are available on the context menu as well as actions to format the EGL source, add/organize import statements, and jump to the declaration for a part (Open on Selection).
|
| Breakpoints for debug |
Breakpoints can be added via the EGL source editor. Breakpoints encountered during execution of the EGL part will result in the developer being directed to the Eclipse Debug perspective. Breakpoints can be set on any EGL statement.
|
| Variables view |
The Variables view allows a developer to see variables currently in scope, their values, and their types. Variables are organized based on whether they are global or local.
|
| Debug for Java Programs |
EGL programs generated as Java can be debugged using the debug tools described above. Note: the EGL debugger is an implementation of JSR-045. Any EGL extensions mapped to a Java runtime can take advantage of this support.
|
| Launching Programs in Debug Mode |
EGL batch-style programs generated as Java can be launched in debug mode (enabling use of breakpoints, etc) via the Debug As > EGL Java Application.
|