Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you develop/deploy BIG enterprise applications in java

I've been using java + spring on tomcat for the past 2 years and my app is getting notably huge. Start up time is now almost 3 minutes and it consumes a lot of resources during the development.

So I am interested in ideas how to make developing a software fun again. I've looked at Spring DM/Gemini blueprint to make it a modular but the experience was not convenient.

Now more modules are about to be added, thinking about developing it another web application and use Spring integration for messaging. Apparently, this will be a very painful experience to develop it on one desktop computer.

Has anybody any experience with cloud development? How do I improve all these time and resource consuming tasks? Will developing in the cloud help me?

like image 729
beku8 Avatar asked Sep 18 '12 03:09

beku8


People also ask

What is enterprise application development in Java?

What is enterprise Java programming? Enterprise Java is the use of Java for application development in enterprise-scale software, and merges a collection of APIs and application servers that implement those APIs. Enterprise Java also includes related technologies, such as the Spring Framework.

Is Java used in industry for enterprise applications?

Java is a widely used general-purpose programming language. Java is designed for use in the distributed environment of the internet. It is the most used for Android mobile apps. Java is also extensively used for developing enterprise software applications.

Why Java is best for enterprise applications?

Java can actually run on any modern hardware and reduces the technicality dependency to nearly zero. This also makes it less expensive for enterprises to set up and maintain Java software and links all the devices and operating systems that may be used within the enterprise (Windows, Mac, mobile devices, etc).


2 Answers

It is very common problem with typical java+spring web apps. With age they start getting bloated and Context Loading starts becoming painful. I can suggest a few pointers to mitigate the issue, but only you will be able to judge best for you depending on the what exactly goes in your app.

  1. Don't depend heavily on server while doing development. Write Unit tests and run them outside the servlet container. Spring has excellent support for this.

  2. Split you business logic in Rest/Soap web-services (judiciously and carefully). This gives you freedom of developing and testing the UI independent of core business logic.

  3. If using maven/gradle, try jetty plugin. It can keep scanning for changes and reloads the webapp automatically (I think tomcat plugin can do the same). It has ability to store session between restarts, so you are not affected by restarts. Please see this for more details How can I speed up Maven and Netbeans

  4. [Paid Option] may try JRebel.

  5. Use CI server, that keeps on integrating/testing/deploying your app, taking some load off your developers machines.

like image 190
kdabir Avatar answered Sep 28 '22 05:09

kdabir


First, take care of the bottlenecks. They have a tendency to creep into projects as they grow. The original design has been compromised again and again to meet insane deadlines and now bloat has killed a once lively application.

Do not guess at the problem but use real data to determine what is making you app slow. Use a profiler such as jProfiler: http://www.ej-technologies.com/products/jprofiler/overview.html

Next, use what you've learned to make the new modules more efficient. The bottom line is changing technology is not a fix all, as all technologies can present bottlenecks. You must find the reason behind the problem and fix that.

Once you fix the bottlenecks, you could create some test projects on a new technology to see if it is faster, easier, does what you need. But, chances are just fixing the problems on your current stack is all that is needed.

like image 20
Todd Moses Avatar answered Sep 28 '22 04:09

Todd Moses