Successfully reported this slideshow.

Java EE | Lightning Fast Developers Are Only As Fast As Their Tools | Simon Maple & Alasdair Nottingham


Published on

2011-11-01 | 03:00 PM - 03:50 PM | Developer productivity is paramount. We cannot live in a world where developers are resting, drinking coffee, enjoying themselves or talking to other people. This does not produce code. Unacceptable! The new WebSphere Application Server V8.5 Alpha tools and runtime have been designed around developer productivity. They truly are super lightweight and lightning fast. We will look at how the Liberty Profile has been designed to meet the high expectations of a development environment, while maintaining it's best of breed attributes around robustness, scalability and transactional integrity. Don't just take my word for it, there will be live demos so you can see the server start in seconds for your own eyes! With developer tools this fast, we can afford to spend some time away from coding, so there will be some coffee related prizes during the session!

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Java EE | Lightning Fast Developers Are Only As Fast As Their Tools | Simon Maple & Alasdair Nottingham

  1. 1. <ul>Lightning fast developers are only as fast as their tools Simon Maple & Alasdair Nottingham </ul>
  2. 2. <ul>Now </ul><ul><li>On 7 th October 2011, IBM released the WebSphere Application Server V8.5 Alpha </li></ul><ul><ul><li>Extremely fast startup times
  3. 3. Tailored for developers
  4. 4. Lightweight
  5. 5. Simple Management
  6. 6. Modular design
  7. 7. Dynamic runtime
  8. 8. Eclipse based tools
  9. 9. WAS fidelity
  10. 10. WASdev community </li></ul></ul>
  11. 11. <ul>Frequency of Development Tasks </ul><ul><li>Common development tasks include:
  12. 12. All tasks should be as painless as possible, with special emphasis on the more frequent ones. If the time taken to accomplish these tasks is an impediment to the development, the cost of the fidelity of the test server runtime is challenged. </li></ul><ul>Hourly Daily Weekly Monthly </ul><ul>Frequency </ul><ul><li>Modify file within an application
  13. 13. Debug a problem in an application
  14. 14. Restart/redeploy application
  15. 15. Restart server
  16. 16. Share code with team
  17. 17. Change app structure (add/remove a module/bundle)
  18. 18. Make config change
  19. 19. Share config change with team
  20. 20. Reproduce problem from another environment
  21. 21. Upgrade to new service release
  22. 22. Create application
  23. 23. Install server </li></ul><ul>fastest faster fast </ul><ul>Time to complete </ul>
  24. 24. <ul>Key Developer Concerns </ul><ul>Incremental Publishing </ul><ul>Problem Determination </ul><ul>Performance </ul><ul>Simple Configuration </ul>
  25. 25. <ul>Simple Configuration </ul><ul>Every application requires some form of server configuration. It must be easy to configure the server and work among a team </ul><ul><li>Typical development tasks include: </li></ul><ul><ul><li>Creating new profiles, or cloning an existing server
  26. 26. Configuring the server to support an application </li></ul></ul><ul><ul><ul><li>Simple configuration changes (e.g. adding a data source) should be equally simple to do, and not require any special admin/production knowledge </li></ul></ul></ul><ul><ul><li>Sharing configurations (and changes) among a large team </li></ul></ul><ul><ul><ul><li>Configuration must be portable to different locations, and easy to apply onto an existing server </li></ul></ul></ul><ul><ul><li>Comparing two configurations to understand the differences </li></ul></ul><ul><ul><ul><li>Configuration must be simple and human readable </li></ul></ul></ul><ul><ul><li>Versioning a configuration in source control
  27. 27. Moving an application between development machines </li></ul></ul>
  28. 28. <ul>Key Developer Concerns </ul><ul>Incremental Publishing </ul><ul>Problem Determination </ul><ul>Performance </ul><ul>Simple Configuration </ul>
  29. 29. <ul>Problem Determination </ul><ul>Applications are always broken during development, due to bugs, missing or incomplete code, or bad configuration. The server must make it easy for developers to identify and resolve problems within their application </ul><ul><li>Runtime must be robust, and react well to malformed apps. It should allow as much of the app to run as possible, so that a bug in one area does not block testing in another
  30. 30. The console (SysOut/SysErr) is for humans, not logging. It should: </li></ul><ul><ul><li>Be clear and concise, informing the user with simple messages
  31. 31. Clearly identify the location of problems in the application, helping developers to identify bugs
  32. 32. Never show stack traces, unless they come from the application. Users should never be able to tell the server is written in Java
  33. 33. Clearly differentiate between internal errors and an error in the application </li></ul></ul>
  34. 34. <ul>Key Developer Concerns </ul><ul>Performance </ul><ul>Simple Configuration </ul><ul>Incremental Publishing </ul><ul>Problem Determination </ul>
  35. 35. <ul>Incremental Publishing </ul><ul>It must be easy to debug and make changes to a running application </ul><ul><li>Incremental publishing is the most frequent (and hence most important) developer task. It must: </li></ul><ul><ul><li>Be consistent and predictable – otherwise developers will resort to doing a slower app or server restart
  36. 36. Be robust – same behavior as reinstalling/restarting the app
  37. 37. Have minimal loss of context – to reduce retesting
  38. 38. Be fine-grained – or it won’t perform (esp. remote)
  39. 39. Be fast enough – compare with Java debugging (near instantaneous) </li></ul></ul><ul><li>Doing this well requires: </li></ul><ul><ul><li>Good ‘loose config’ – ability to run from arbitrary structures on disk, to reduce copying
  40. 40. Incremental/delta publishing
  41. 41. Auto-update/restart – the runtime must react to changes and make them live, or tell the user (including return code for tools) why it didn’t/can’t </li></ul></ul><ul><li>Must be consistent across programming models! </li></ul>
  42. 42. <ul>Key Developer Concerns </ul><ul>Performance </ul><ul>Problem Determination </ul><ul>Simple Configuration </ul><ul>Incremental Publishing </ul>
  43. 43. <ul>Performance </ul><ul>The server must be responsive to changes that are made during development </ul><ul><li>Performance focus for development (single user, low throughput) is very different than production
  44. 44. Server must work well on older laptops, with slower hard drives, constrained memory, and shared with tools, email, and web browser
  45. 45. The most important paths are: </li></ul><ul><ul><li>Incremental publishing
  46. 46. Startup time
  47. 47. Installing an application </li></ul></ul><ul><li>Should scale appropriately with the size/requirements of the application </li></ul>
  48. 48. <ul>What's the Liberty Profile? </ul><ul><li>WAS V8.5 Alpha introduces: </li></ul><ul><li>A new dynamic profile of WAS which is focused FIRST on the development experience </li></ul><ul><ul><li>Small footprint test server runtime
  49. 49. Simplified, shareable config
  50. 50. Fastest possible server start-up </li></ul></ul><ul><li>Fidelity with full-profile WAS </li></ul><ul><ul><li>Same containers, QoS as full-profile WAS
  51. 51. But radically refactored to focus on the development experience
  52. 52. Extreme dynamicity to start what the app requires and no more </li></ul></ul><ul><li>Initially focused on dev/test of web, mobile and OSGi apps. </li></ul>
  53. 53. <ul>Highly composable runtime based on ‘features’ </ul><ul>runtime services config model </ul><ul>Java EE support </ul><ul>WAS Extensions </ul><ul>Full WAS profile </ul><ul>Liberty profile </ul><ul>runtime (osgi) services </ul><ul>http transport </ul><ul>webcontainer </ul><ul>app manager </ul><ul>jsp </ul><ul>jsf </ul><ul>runtime (osgi) services </ul><ul>http transport </ul><ul>webcontainer </ul><ul>app manager </ul><ul>web app security </ul><ul>servlet-3.0 </ul><ul>jsf-2.0 webAppSecurity-1.0 </ul>
  54. 54. <ul><li>Free & frictionless download of developer tools
  55. 55. Extends Eclipse JEE Helios (3.6) and Indigo (3.7)
  56. 56. Available from: </li></ul><ul><ul><li>New WASdev community site:
  57. 57. Within Eclipse (Help  MarketPlace)
  58. 58. Eclipse Marketplace web site </li></ul></ul><ul>Get the WebSphere Dev Tools Easily </ul><ul> </ul>
  59. 59. <ul><li>Free & frictionless download of the WAS runtime for development & test
  60. 60. New lightweight “WAS Liberty profile” is now available through the WAS V8.5 Open Alpha program.
  61. 61. A zip download for web application development - 25 MB . Available from: </li></ul><ul><ul><li>New WASdev community site:
  62. 62. Within the WebSphere Development Eclipse </li></ul></ul><ul>Get the WAS Runtime Easily </ul>
  63. 63. <ul>Summary </ul><ul><li>WAS V8.5 Alpha includes a lightweight, composable “Liberty” profile of WAS. </li></ul><ul><ul><li>With high fidelity to WAS V8 production environment
  64. 64. Focusing on the needs of the developer </li><ul><li>Reduce overhead of common development tasks
  65. 65. Suitable for modest development hardware </li></ul></ul></ul><ul><li>WebSphere Developer Tools for Eclipse deliver tools for the most popular WAS programming models as Eclipse features.
  66. 66. Free with no time limit for development use </li></ul><ul><ul><li>Accelerates development time to productivity. </li></ul></ul>