This is the first of a new series of blog posts delving inside WASLiberty to cover how it works and why we made the choices we made. For the first option I’ve decided to talk about how Liberty install is changing for 18.104.22.168 to support Java EE 7, however please add comments or tweet to me (@notatibm) or WASdev (@wasdevnet) if you have any topics you’d like to know more about.
Choice is a double edged sword, typically we see the ability to make a choice as a good thing, after all not everyone is the same, but the counter to this is that if you have too much choice it becomes increasingly difficult to make that choice, too much information, too difficult to obtain. IBM is good at providing choices, often too many choices. Taking a look at install for Liberty we have a number of options. The first is which edition do you want, then which install technology (IBM Installation Manager (IIM) or archive), finally what capabilities do you want (with additional features being installable from the Liberty Repository). When thinking about our 22.214.171.124 release and the EE 7 capabilities we knew we had a difficult challenge on how to address the following two scenarios:
- People who just want the latest service pack as simply as possible
- People who just want Java EE 7 as quickly as possible
- People who need something bespoke for their application
I want to get the latest fixes.
For those upgrading to get the latest service we know we need to provide a consistent user experience, so for this scenario we are distributing .jar files and IIM repositories. In general when upgrading you don’t want to have new function and while the Liberty architecture allows us to deliver new features without them being used at runtime we felt that providing a consistent content was important, so we have the same .jar files we have had in prior releases with the same content. Nothing added, nothing removed, just the latest service.
I just want Java EE 7!
For those wanting to get Java EE 7 as quickly as possible having to download the existing archives and then install Java EE 7 features from the Liberty repository didn’t seem to be a good user experience. The big new thing for June 26th 2015 is Java EE 7 so we need to make it as easy as possible to get hold of. However size matters. Liberty is now doing Java EE 7 full platform which takes about 100Mb (with Web Profile being a smaller 65Mb). When we first released Liberty profile we got a lot of feedback that the small size was great and please keep it small, of course Java EE 7 full platform is necessarily larger. Since we feel that size matters to our users we decided to provide three different options:
- wlp-javaee7-126.96.36.199.zip – A zip file containing the full Java EE 7 platform, plus a set of features useful for when you go into production
- wlp-webProfile7-188.8.131.52.zip – A zip file containing the Java EE 7 Web profile, plus those features useful for when you go into production
- wlp-kernel-184.108.40.206.zip – the Liberty profile kernel, absolutely no features, install just what you need to get a bespoke runtime
How many download options is that?
So far I’ve described 4 different downloads, earlier I mentioned that we have 3 main editions. If we multiply those together we have 12 different things you could download. That is a lot. We didn’t want to end up with 12 archive options in Fix Central. So for these new archives we will have a developer friendly unsupported license. When you want to deploy into production you apply a production license which you download from Passport Advantage. For developers this means you can download these archives from wasdev.net, do your development at no charge. When you go into a test or production environment you can reuse the existing download and just apply the production license.
Can I get IBM Java with that?
Another thing you’ll likely notice is we are using zip rather than jar. Now you might wonder why we made this change, essentially it is a bootstrap issue. We got a lot of questions asking how to get IBM Java and Liberty together, so we are now packaging IBM Java and Liberty together. Of course doing this using a .jar install would cause issues because you need a jvm to run jar, so we switched to zip. These new zips contain IBM Java 8 too so you get the latest and greatest Java.
That sounds great, but I need more features!
What if you want features not in one of these archives? That is really simple using the new installUtility. The installUtility can do two cool and funky things:
- You can install any missing features from the Liberty repository, e.g. installUtility install adminCenter-1.0
- You can get every feature required by a server (or server package) installed e.g. installUtility install myServer
This makes it very easy to get the features you need installed into the local runtime. There is also proxy support if you need to go through a proxy to access our online repository, or if you prefer you can download the Liberty Asset Repository Service (LARS) from github, run it on a Liberty profile server (yes we do recurse) you can then either import the features from the Liberty repository, or download a zip with all the repository features in it to import into LARS.
How do I get everything I’m entitled to!
We have you covered here too. Sometimes asking piecemeal for things is complicated, if you want the all you can eat buffet for install you can get the installUtility to do that too. There are five bundles in total:
- libertyCoreBundle – installs all the features that are part of the Liberty Core edition
- baseBundle – installs all the features that are part of the ‘base’ edition (this is the edition whose name is just WebSphere Application Server)
- ndMemberBundle – installs all the features that are part of the ND edition that would be installed in an application server, so it doesn’t have things like collectiveController and scaling Controller.
- ndControllerBundle – installs all the features you would ever need in a collective controller process.
- zosBundle – installs all the features for z/OS.
If you want to get hold of all the features for ND in one install you would install the ndControllerBundle and the ndMemberBundle.
So in conclusion:
- Make it simple for developers – ✔
- Make it simple to upgrade – ✔
- Make it simple to get everything – ✔
- Make it simple to get Java EE 7 – ✔
- Make it simple to get into production – ✔