Archive for the ‘MyEclipse for Spring’ Category

Free Webinar: Generate GWT and Flex Apps in Minutes

Tuesday, August 24th, 2010

Join us for a free webinar on Tuesday, August 31, 2010 at 11:00 AM – 12:00 PM CDT

This webinar deep dives into the new Adobe Flex and Google Web Toolkit (GWT) scaffolding options that are available in MyEclipse for Spring 8.6. We’ll cover the following:

  • How does it work? See how to quickly generate working GWT and Flex applications from existing DB tables, Java Beans and JPA entities in a matter of minutes.
  • What gets generated? One of the biggest learning curves is understanding what gets generated – we’ll do a deep dive into the generated artifacts to help users understand what exactly comes out of MyEclipse for Spring.
  • How does it compare to other GWT/Flex scaffolding technologies?

Register at https://www2.gotomeeting.com/register/691323002

Attend this webinar if you want to see how MyEclipse for Spring (ME4S) is delivering unprecedented Rich Internet Application scaffolding options to the Spring Community.

For developers who are looking to learn new technologies like Flex or GWT, MyEclipse for Spring 8.6 allows them to quickly create their own contextual examples that they can then reference while getting up to speed on the new technology. Meanwhile, developers who are experts in these technologies can stop worrying about the boilerplate code, and let MyEclipse for Spring take care of all the mundane, repetitive tasks.

Bonus Offer!

All webinar registrants will receive a 30 percent discount off of MyEclipse for Spring – just for registering!

Visit https://www2.gotomeeting.com/register/691323002 to register and get your coupon code today!

Rapid Application Modernization to Java/Spring

Thursday, August 19th, 2010

When we hear the term application modernization, the immediate image that comes to mind involves modernizing twenty-five year old critical business applications written in COBOL. While this is still true and represents the bulk of work in this field, there are other growing areas of application modernization that businesses undertake. These include migrating more recent heavy-weight legacy applications based on technologies like JEE and Oracle Forms to the newer light-weight Spring Framework. Another emerging modernization area involves moving from older web user interface technologies like JSP to newer more robust technologies like Spring Web Flow, Adobe Flex, and Google Web Toolkit (GWT). Modernization also involves updating the web layer to support mobile devices like the iPhone. Regardless of the application modernization area, MyEclipse for Spring provides tooling to support a rapid migration strategy.

Modernizing Existing Legacy Systems

COBOL Systems

Interestingly, reading through the plethora of online technology sites, it’s easy to get the impression that today’s information systems are almost all web applications using Java or .Net on the back-end. The reality, of course, is that the bulk of critical business applications remain in the world of COBOL – and there are no signs those systems are going to change dramatically in the near term. What is changing with an elevated sense of urgency, however, is the recognition that businesses need to define an application modernization plan that preserves and renovates their critical business processes while at the same time reducing the operating and maintenance cost of their aging existing systems.

From a high level perspective, the plan involves starting with an “as is” analysis of the current system – e.g., understand the complexity, structure, business rules, nature, and intended use of what is typically a loosely understood and largely undocumented system. The next major step involves defining the path for the “to be” system. In most cases, the modernization migration path involves a practical incremental approach. In this incremental approach, we start by defining, publishing, and using key business functionality from the existing system through web services. Then, we develop individual functional areas with Java/Spring and migrate the application in functional blocks in a timeframe that the business and technical teams can handle.

Oracle Forms Systems

The process for migrating from an Oracle Forms system to a Spring Framework system will be similar to the COBOL legacy system migration strategy. However, the migration effort should be easier due to a probability that the system software will be understood for the most part and has documentation. The functional areas may be a little tricky to separate as Oracle Forms relies heavily on PL-SQL for implementing business and validation logic. For Oracle Forms, the web services will usually be thin wrappers that call the PL-SQL stored procedures.

JEE Systems

The process for migrating from a JEE system to a Spring Framework system will be similar to the COBOL legacy system migration strategy. However, the migration effort should be easier due to a probability that the system is understood for the most part and has documentation. Also, the developers will already understand Java.

Using MyEclipse for Spring in the Migration Plan

MyEclipse for Spring provides tooling to accelerate the “to be” migration strategy – for both scaffolding the web layer and using the web services to access the existing legacy system, as well as, developing the functional areas for migration to Java/Spring solution.

Incremental Migration – Using Web Services

After web services are defined and exposed, we use the WSDL import capability of MyEclipse for Spring to quickly generate the Spring and JAX-WS infrastructure to support calling the web services. Once the web service infrastructure is generated, we use the MyEclipse for Spring scaffold capability to quickly scaffold any of a variety of web layer implementations (e.g., Spring MVC, Spring Web Flow, Adobe Flex, GWT, and iPhone) for any of the Java Beans created during the WSDL import process.

Incremental Migration – Developing Spring Services

Another feature of the WSDL import process is the generation of “contract-first” Java package shells. When the WSDL import process completes, we have code shells for Spring Services and JUnit test classes that would be implemented and tested by Java developers. MyEclipse for Spring also includes code assistants to help developers create and maintain Spring annotations for their Spring Services. Once the code is completed and the business is ready, only one line of code needs to change to switch from using the web service provided by the existing legacy system to the new Spring Service.

Modernizing the User Interface

For the desktop

This area of modernization has become more popular as we see robust RIA solutions mature in the marketplace (e.g., Adobe Flex, Spring Web Flow, Google Web Toolkit, etc.). MyEclipse for Spring simplifies this modernization process through its scaffolding capabilities. Starting from a variety of sources including data schemas, JPA entities, and Java Beans, developers scaffold the web layer with the new user interface technology. From there, developers use the scaffold as either a starting point for building the complete user interface against the back-end or as a reference implementation template for coding the user interface with the chosen technology.

MyEclipse for Spring Scaffolding Wizard

For mobile devices

Similar to its help for desktop web applications, MyEclipse for Spring simplifies modernization process for the iPhone through its scaffolding capabilities and for other mobile devices with small changes to context files and style sheets. Again, developers use the scaffold as either a starting point for building the complete user interface against the back-end or as a reference implementation template for coding the user interface with the chosen technology

iPhone Scaffolding with MyEclipse for Spring

Try it Yourself

MyEclipse for Spring is available for a free, 30-day trial. Accelerate your application modernization process by downloading from http://www.myeclipseide.com/module-htmlpages-display-pid-4.html.

Making Functional Prototypes a Reality

Tuesday, August 17th, 2010

Although there are several important technical areas of concern when developing production-ready software, its success fundamentally depends on having running code that implements the original conceptual ideas and functional requirements.  On the surface, this seems to be a straight forward and well understood problem to solve.  Talk to the users (or their proxies, the business analysts) to capture the conceptual ideas and requirements – then translate them to design and code.  How difficult can that be? Seriously, the more complex and interesting problems will involve addressing the technical concerns of scalability, availability, maintainability, security, etc – right?

Of course, those of us who spent decades in this field learned first-hand that moving from conceptual idea to running code that reflects the functional requirements involves a lot of moving parts.  This includes working with a diverse set of people and a lot of “I probably won’t know or understand what I want until after you build it” reality, which make it a very complex problem to solve.  The field of software engineering does a nice job of breaking down the basic process elements for attacking the problem.  Regardless of the development methodology you use – from the older waterfall through the newer agile variations – they all involve some level of define, design, build, deploy, and test processes.

Bridging the Disconnect between Conceptual Design and Running Code

Looking back at years of real projects and the lessons we can take away from them, it becomes apparent that we have to address key failure points as early in the software development lifecycle as possible.  The first failure point is typically traced back to vague, misinterpreted, and missing requirements.  Its downstream impact is increased time and money required to address the disconnect from what the user actually wanted and the delivered application, which kills the benefits projected and in effect reduces the success of the project.  Typically, these disconnects only come to light after the application is built and the user actually uses the running code.  This is the genesis for the area known as functional prototyping.  The premise is simple enough – inject the opportunity to validate the functional requirements of the system before actually investing the time and money to build the system.

This area of software engineering has had some level of success, but continues to suffer real uptake in the industry.  This is mainly due to the time consuming nature of creating what is essentially a throw away mini-project during the conceptual phase of development using the current tools available in the market. Pure agilest will also argue that functional prototypes become less needed as you reduce the application release cycle times. In essence, these mini-application releases serve the same purpose while also producing usable code.  On the surface, this seems a reasonable argument.  Interesting enough, the argument can be flipped to say non throw away functional prototypes embed the value of agile principles – focus on producing software often and early – within the waterfall methodology for the complex systems.

Using Scaffolding to Create Functional Prototypes

This is where MyEclipse for Spring provides a modern light-weight solution that makes sense for both simple and complex projects.  Use the scaffolding capabilities to produce quick functional prototypes during the conceptual phase of the software development life cycle.  The tooling provides full web application scaffolding from a variety of sources including data schemas, JPA entities, Java Beans, and WSDLs.

The most common functional prototyping approach is validating a functional area defined by a set of tables in the data schema.  In this scenario, a business analyst with minimal technical skills could run through the scaffolding wizard and generate a working CRUD web application for the selected tables.  However more often, a business analyst or set of business analysts are paired with a developer to quickly validate the domain and the expected functional interactions.  The beauty of this approach is the minimal time required for the users (or more likely, their proxies the business analyst) to validate and update the functional requirements.  It typically takes minutes to scaffold, followed by short iterations to update the domain and the functional requirements.

Functional Prototype created with MyEclipse for Spring

Another common scenario involves validating functional requirements while using web services.  Injecting scaffolding into the process involves two steps.  In the first, the business analyst or paired developer imports the WSDL to generate the back-end service and data objects.  In the next step, the business analyst or paired developer scaffold the web layer from the generated Java Beans that represent the web services domain objects.  Again, this light-weight approach takes minutes to create the functional prototype to be used to validate requirements.

Perhaps the best part of using MyEclipse for Spring to scaffold and validate functional requirements is that the scaffold can be re-used and extended in the build phase of the project.  In essence, the time invested during the conceptual phase to validate the functional requirements with scaffold prototypes is gained back from reduced build time required – and you have visually validated the functional requirements before starting the build phase of your software development life cycle.

Try it Yourself

MyEclipse for Spring is available for a free, 30-day trial.  Start creating your own functional prototypes by downloading from http://www.myeclipseide.com/module-htmlpages-display-pid-4.html.

GWT and Spring: It’s Not Magic After All

Thursday, August 12th, 2010

One of the masterminds behind the GWT+Spring scaffolding support in MyEclipse for Spring wrote this article that describes the design philosophy and the GWT application architecture. The article includes some great sample Java/GWT code and a great explanation of how all the pieces fit together. As it turns out, it’s not magic after all.

Read the full article at DZone

And, if you want to see our GWT scaffolding in action, join us on August 31st for a free webinar.

Mobile Spring-Based Web Apps for Everyone

Monday, August 9th, 2010

One of the snappy new features in MyEclipse for Spring 8.6 is the ability to scaffold a web application that’s skinned to look like an iPhone app.  The generated app runs on a web server and uses a Spring back-end.  But, what about the oodles of people who don’t use iPhones or the brilliant developers who know that smartphone names don’t always start with the letter i?

Well, that’s where this article comes in.  I will show the MyEclipse for Spring user how to convert their fancy iPhone app to an ultra-fancy mobile app that will look smashing on any smartphone that has a reasonable screensize. When you’re finished with this article you will have a running application customized not only for your immobile desktop, but also your Android phone, your sister’s Palm Pre and your cube-mate’s iPhone.

iPhone to Palm

The Goal

There are three steps necessary to achieve our goals today.  First, we’ll scaffold an iPhone app.  Then we’ll duplicate our iPhone pages and update their CSS to be less iPhone-ish.  Finally, we’ll apply a little dab of Spring glue necessary to make those new cooler pages show up on some other smartphones.  As a final but optional step, you can brag to your co workers about how smart you are now that you’ve done this.  Enough with the formalities, let’s get started.

Step 1 – Scaffold the iPhone application

In this example we’ll scaffold a Spring MVC front-end along with the iPhone front-end but in real life you could choose to scaffold any of the cool technologies supported by MyEclipse for Spring like MVC, GWT, Flex or Web Flow.  There is also no requirement that you scaffold anything but the iPhone.  Since we want an application that shows everyone how smart and flexible we are, we’re going to do Spring MVC and iPhone.

For this example, we’re going to scaffold a very simple task management system from a basic Java class.

package com.tasks.domain;

public class Task {

private String name;
private String description;
private String taskType;
private Boolean isDone;

}

  1. Create a MyEclipse Web Project named TaskManager.
  2. Create a com.tasks.domain package.
  3. Save the Task Java Bean into the new package.
  4. Right-click on the project and select MyEclipse > Scaffold Spring CRUD Application…
  5. On the scaffolding wizard, select Java Beans and press Next.
  6. Pick our Task bean and press Add.  Then press Next.
  7. On the Select Primary Keys panel, select the Task bean and pick the name field as the primary key.
  8. Fast forward until you get to the Select Web Client Type panel.
  9. On the Select Web Client Type panel, pick Spring MVC and iPhone and press Next.

Select Client Types

On the Customize User Interface panel you can specify better labels for fields that appear on the generated JSP pages.   You can also configure which fields will appear in the lists. We want a simple list on our iPhone version so un-check the “Propagate changes to all web client types” checkbox and un-check the all but the “Name” field under the iPhone section. You can also customize the labels if you like.

Customize User Interface Panel

Press Finish when you’re done customizing your labels, then sit back and take a sip of coffee while MyEclipse for Spring generates your DAO Service, Controller, JSP’s and spring configuration files for your mobile and desktop task management system.

At this point, you could deploy the project to your local Tomcat server and access it using your favorite desktop browser.  If you do that, you’ll notice that the application is the standard Spring MVC application generated by MyEclipse for Spring. The dashboard page contains the launch pad to your Spring MVC page and also a note about your iPhone app.

Dashboard

If your Tomcat server is on the web or accessible via Wi-Fi, you can grab your buddy’s iPhone and hit the main page to see the iPhone version.  If you don’t have an iPhone handy or your buddy is too busy playing Chat Roulette on his, take a look at the MobiOne product from Genuitec.  A third option is to download Safari and spoof the user agent string.

Safari Tip: Enable the Develop menu on the Advanced tab of the Preferences panel.  Then on the menu button for the current page, select Develop > User Agent > Mobile Safari – 3.1.3 – iPhone

Regardless of the tool used, once you’ve accessed the iPhone application with a browser that supplies an iPhone user agent string, you’ll see the iPhone version of the application.

iPhone Dashboard - in MobiOne

iPhone Dashboard - in MobiOne

On the following pages we’ll use this iPhone app as a starting point for our non-iPhone mobile web application.

Save 250 Hours a Year, Your Company $11,000

Thursday, August 5th, 2010

Why should you give MyEclipse 8.6 a look?

Let’s put some hard numbers to MyEclipse, picking just ONE feature that raises a lot of customer eyebrows: hot-sync server deployment and application debugging.

MyEclipse allows you to deploy to an embedded Tomcat server, run/test/debug your app all in real time. No stop-start-stop-start-debug-stop-debug-start behavior. We have had customers say this behavior alone can save their developers over an hour per day just waiting for server reboots. At that time cost, the savings are about 250 hours per year, or about seven work weeks. Now I don’t know about you, but that’s a lot of time I would rather developers spend coding, not waiting around.

 average developer salary (USA) $70,000
 corporate overhead/benefits/taxes $30,000
 total company cost per year/developer  $100,000
 total company cost per hour (100K ÷ 52 ÷40)  $48
 avg hours/ day waiting on servers (based on feedback)  ~1
 average USA work days per year  240
 240 days x $48/day savings =  $11,520
 Expenditure for MyEclipse Professional – $60

 Net annual savings on hot-sync features alone  $11,460

Scaffolding Blueprints for Spring MVC, Spring Web Flow, Flex+Spring, and GWT+Spring

Wednesday, August 4th, 2010

According to feedback from our users, one of the biggest learning curves with MyEclipse for Spring is understanding everything that gets generated.  And, when you consider all of the new scaffolding options (Spring Web Flow, Spring-Flex, GWT, iPhone Web) that are now supported in MyEclipse for Spring 8.6, there’s now even more to understand.  Our primary focus has been on making the product rich in code generation functionality and easy to use, but we’ve learned from recent customer feedback that we need to do a better job of explaining exactly what comes out of MyEclipse for Spring.

The MyEclipse for Spring 8.6 Reference Guide now contains a new section called Scaffolding Blueprints.  For each supported web client (Spring MVC, Spring Web Flow, Adobe Flex, GWT, and iPhone Web) and application layer (web, service, domain and data access), the blueprints provide (1) a blueprint diagram and  (2) an inventory of generated files.  Many of the 8.6 early access users have reported that these blueprints have been a tremendously helpful reference and provide a great jumpstart for understanding the capabilities of MyEclipse for Spring.

Here are a few of the blueprint diagrams for some of the supported scaffoldings.

Spring MVC


Click diagram to enlarge

Spring Web Flow


Click diagram to enlarge

Flex and Spring


Click diagram to enlarge

GWT and Spring


Click diagram to enlarge

These blueprint diagrams provide a great snapshot of what gets generated during scaffolding.  For now, the blueprints only focus on single entity scaffolding, and they don’t include what gets added when scaffolding entity relationships.  MyEclipse for Spring supports scaffolding entity relationships, but I thought that including entity relationships would complicate the blueprints to the point that they would be difficult to follow.  However, hopefully this provides a good starting point for the MyEclipse for Spring community.

The Scaffolding Blueprints can be found in the Eclipse Help for MyEclipse for Spring.  Soon, they will also be available online, so please check back.  If you have any suggestions for improvements, please post a comment on the MyEclipse for Spring forums, or contact me directly at neyde at skywaysoftware.com.