Java app developers, protect your intellectual property and improve the end-user experience. Get Excelsior JET.
 

Excelsior JET 12 To Introduce Profile-Guided Optimization

To the best of my knowledge, the HotSpot VM was the first managed runtime to popularize the idea of selective JIT compilation based on a live application execution profile. Basically, it only compiles to native code the repeatedly or frequently executed parts of the application — hot spots. The idea was so central to the design of the VM that it was reflected in its name. The HotSpot VM also continually collects lots of other information about the running program, enabling many object-oriented and traditional optimizations in the JIT compiler, such as inline substitution of method calls.

At the same time, all the widely used implementations of C and C++, the most ubiquitous among the statically (i.e. Ahead-Of-Time) compiled languages, also implement profile-guided optimization, or PGO for short. The only principal difference is that profiling occurs on the developer’s system, as a separate step of the build process, and the respective overhead is not passed over to all the end-user installations of the optimized application.

So it was just a matter of time before we would add PGO to our Ahead-Of-Time Java compiler. Please meet and greet PGO-enabled Excelsior JET 12, now available for early access:

Download beta 2 | Notable Changes | Profile-Guided Optimization

Our tests show that PGO can deliver substantial application performance improvements, especially when combined with the Global Optimizer, which has finally found its way to the 64-bit x86 and ARM versions of the compiler. But we have also seen examples of PGO making no difference. Therefore we encourage you to try the beta against your applications, and would be most grateful for your feedback!

Categories: Excelsior JET, News

Tags: , ,

Video: Nikita Lipsky Talks About Unity And Conflict of JIT And AOT Compilers @ Riga Dev Days 2017

Watch our Nikita Lipsky speaking about JIT and AOT compilers at Riga Dev Days 2017.

Slides:

Categories: Java, News

Tags: , , , ,

Excelsior JET Maven and Gradle Plugins Reached 1.0

It always feels special when a project matures to a level justifying the first increment of its major version number. Meet Excelsior JET Maven and Gradle plugins 1.0!

As you may recall, we declared the previous version a Release Candidate, so the list of what we have done since its release is quite short:

  • Reworked plugin documentation and moved it to the respective wikis: Maven | Gradle
  • Tested both plugins against all platforms/editions that Excelsior JET 11.0 and 11.3 support
  • Fixed a handful of minor bugs reported by users and found during testing
  • Added support for the compiler parameter that controls allocation of Java objects on the stack, which we had somehow overlooked

I also have to make one

Backward Incompatible Change Alert

Beginning with version 1.0, Windows version-information resource generation is off by default. To revert to the pre-1.0 behavior, add the following to the plugin configuration:

Maven: <addWindowsVersionInfo>true</addWindowsVersionInfo>
Gradle: addWindowsVersionInfo = true

Links

Excelsior JET Maven Plugin:
Home page | on GitHub | on Maven Central

Excelsior JET Gradle Plugin:
Home page | on GitHub | on Maven Central

Future Plans

We have just a couple of items left on the plugins roadmap. What is interesting is that they are not among the current product features:

  • Multi-component support: building dependencies into separate native libraries to reuse them across multiple builds so as to reduce the overall compilation time, and
  • Code signing

However, please note that the development of the plugins will now have to pause for a few months, as the main contributor is speaking at several events this and next week and will then join others on the final push towards the summer release of Excelsior JET 12. But you are of course very welcome to request other features in the meantime.

Categories: Excelsior JET, News, Open Source

Tags: , ,

Excelsior JET 11.3 MP1 Adds Support for Java SE 8u121

Excelsior JET 11.3 Maintenance Pack 1 (MP1) fixes a few customer issues and adds support for Java SE 8 Update 121.

Read the rest of this entry »

Categories: Excelsior JET, Product Updates

Excelsior JET Maven and Gradle Plugins Release Candidates

We have updated Excelsior JET Maven and Gradle plugins to version 0.9.5. Here is what they now enable you to do:

  • Add separate files/folders to the package
  • Fully configure Excelsior Installer:

    • set installation wizard language
    • remove all files on uninstall
    • run an executable after installation
    • control installation package compression
    • change installation directory defaults
    • customize the registry key used for installation on Windows
    • add shortcuts to the Windows Start menu, Desktop, etc.
    • suppress the default post-install action
    • configure custom post-install actions
    • create file associations
    • specify install/uninstall callback dynamic libraries
    • customize the (un)installer appearance
  • Allow the user to change the Tomcat port at install time

Feature Freeze

The plugins now support all features accessible via the graphical interfaces (JET Control Panel and JetPackII), with three exceptions:

  1. Eclipse RCP support, because the Eclipse Tycho Maven Plugin graduated the incubation stage just a few days ago. We may support it in the future if there will be enough demand. As for Gradle, there is no such plugin in sight.
  2. Application update packaging, because we plan to overhaul that feature completely in the mid-term future.
  3. Localization of the Excelsior Installer wizard, because we have not yet found an easy-to-use way to configure it from the plugin.

There will be no more features added before the 1.0 release, so you can think of 0.9.5 as a Release Candidate. It is therefore a perfect time now to report any issues that you may have spotted in the plugins previously, but had no time to report back then. (Please check that they are still present in 0.9.5 before reporting.)

Future Plans

We have just a couple of items left on the plugins roadmap. What is interesting is that they are not among the current product features:

  • Multi-component support: building dependencies into separate native libraries to reuse them across multiple builds so as to reduce the overall compilation time, and
  • Code signing

However, please note that the development of the plugins will likely pause for a few weeks or months due to a priority shift. In the meantime, you are welcome to request other features.

Excelsior JET Maven Plugin:
Home page | on GitHub | on Maven Central

Excelsior JET Gradle Plugin:
Home page | on GitHub | on Maven Central

Categories: Excelsior JET, Open Source

Tags: , ,

Excelsior JET 10.5 EOL Alert

According to the Support Policy, Excelsior JET 10.5 has reached Product End Of Life status. We encourage customers of this version to migrate to more recent versions to receive the support services under valid Support Contracts.

If you need help in migrating to a newer version of Excelsior JET,
do not hesitate to contact us.

Categories: Excelsior JET, Product Updates

Excelsior JET Maven and Gradle Plugins Now Support Optimization Presets

We have updated Excelsior JET Maven and Gradle plugins to support optimization presets. When the Typical preset (default) is enabled, all classes from all dependencies get compiled to native code, unless you add compilation set control parameters for particular dependencies. The Smart preset enables library detection heuristics aimed at reducing compilation time and executable size. For more information, consult the README file of the plugin that you are using.

Note: Unlike the identically named preset in the JET Control Panel, the Smart preset does not enable the Global Optimizer.

Excelsior JET Maven Plugin:
Home page | on GitHub | on Maven Central

Excelsior JET Gradle Plugin:
Home page | on GitHub | on Maven Central

Categories: Excelsior JET, Open Source

Tags: , ,

Excelsior JET Maven And Gradle Plugins Support More Runtime Configurations

We have updated Excelsior JET Maven and Gradle plugins to support more runtime configurations. Now the users of those plugins also can:

  • Select the desired Excelsior JET Runtime flavor – Desktop, Server, or Classic
  • Change the default location of the Excelsior JET Runtime directory in the resulting package
  • Reduce application disk footprint (32-bit versions only)

Excelsior JET Maven Plugin:
Home page | on GitHub | on Maven Central

Excelsior JET Gradle Plugin:
Home page | on GitHub | on Maven Central

Categories: Excelsior JET, Open Source

Tags: , ,

Excelsior JET Maven And Gradle Plugins Now Support Compact Profiles

We have updated Excelsior JET Maven and Gradle plugins to support Java SE Compact Profiles.

Excelsior JET Maven Plugin:
Home page | on GitHub | on Maven Central

Excelsior JET Gradle Plugin:
Home page | on GitHub | on Maven Central

Categories: Excelsior JET, Open Source

Tags: , ,

From Excelsior Hack Day V: Git Autocomplete Plugin for Far Manager

Remember Norton Commander? You aren’t much younger than me then. If you don’t, Norton Commander was a file manager for MS-DOS that worked in text mode. It was initially released in 1986, and its pirated copies became ubiquitous in the Soviet Union. To the less computer-savvy people, Norton Commander was the operating system back then — they were literally unable to use a PC without it.

It therefore comes as no surprise that it was a Russian developer Eugene Roshal who created a Norton Commander clone for Windows. Globally Eugene is primarily recognized for the creation of the RAR archive format and the WinRAR archiver. But here, the product many of his fellow Russian developers and some non-developers, including myself and the rest of Excelsior, still use on a daily basis is Far Manager, usually shortened as “Far”. To us, Far is the real Windows Command Prompt.

One area where Far loses out to Bash is command line autocompletion, known to be a productivity boost to all Git users maintaining dozens of local branches. The good news are that Far can be extended with plugins, so a pair of our Far and Git fans decided to put its SDK to a good use during our recent annual hackathon. The result is the Git Autocomplete plugin for Far Manager, released today under the MIT/X11 license.

Categories: Open Source