Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't we use spring for distributed java applications?

This came as an interview question.

The interviewer asked me if you can use spring for all the purposes and get away without using any of the Java EE framework .

I said yes, but he asked me how about if the application is distributed and what is the point of application servers.

I am not sure about the answer.

Does Spring do everything that the Java EE framework does?

like image 511
user2434 Avatar asked Apr 18 '12 13:04

user2434


People also ask

Is spring only for web applications?

One of the most popular uses is as a web server, using one of the many supported embedded servlet containers and template engines. However, Spring Boot has a number of uses that do not require a web server: console applications, job scheduling, batch or stream processing, serverless applications, and more.

What are distributed applications in Java?

A distributed application consists of one or more local or remote clients that communicate with one or more servers on several machines linked through a network. With this type of application, business operations can be conducted from any geographical location.

Does spring provide a Java application server?

The Spring Framework is an open source project that provides a framework for simple Java™ objects that enables them to use the Java EE container through wrapper classes and XML configuration. You can use the Spring Framework with WebSphere Application Server Version 6.0.

What is distributed application architecture in Java?

Java Application Development. Microservices. By Spencer Bos. A distributed application is an application comprised of multiple clients that communicate with servers or machines through a network.


2 Answers

Well, Spring is wide. So you can review point by point. I'm not specialist in Java EE but I'm sure Spring can cover a lot (if not all) of Java EE concerns. And I'm pretty sure Spring can handle most of layers/concerns in an application.

First of all, Spring IOC. You can configure an object graph with Spring IOC. It helps at any layer configuring all the components you need to implement a layer.

Spring-MVC-Web: you can configure an MVC web component in order to handle and serve all web application requests. I think you can make something cool with it. Configure web responses and its necesary configuration with other business elements (including IPC - Inter Process Comunication).

Spring Security is heritage from Acegi. It's a web framework for defining role-defined access to web resources.

I'm not sure if Hessian is Spring's too. Anyway it's lightweight and it helps comunicating with components in other processes à la RMI.

Well... I'm not sure about persistence, but I thing Spring has templates for JDBC, Hibernate, and all, so it can help anyway (as suggestions indicate: JmsTemplate and RestTemplate are available for communication with other business components!).

The core thinking here is: you can make an app from scratch, so in all cases, Spring can provide a framework to ease the difficult/repetitive tasks on every layer. Does Spring does it? Yes.

Please check other features to see if Spring has something for it. I'd bet it.

like image 115
helios Avatar answered Oct 15 '22 07:10

helios


Deep down, Java EE is a set of specifications (some of which have been contributed by Spring team!)

Spring's mission statement is to 'Simplify Java Development'

It does so using the following techniques:

  1. POJO -> facilitates easy testing
  2. DI -> promotes loose coupling
  3. AOP -> promotes separation of concerns, maintainability etc
  4. Templates -> provides a standard programming model which does the heavy lifting for you

Spring and Java EE do not have a "Vs" relationship.

Using the above techniques, the Spring Framework lets you build (Java EE) standards-based applications more efficiently.

>Does spring do everything that the Java EE framework does ?

Based on what I've said above, the question might be rephrased as 'Does Spring have support/implementations for all the technologies that comprise the Java EE specification?' - Nope, but it does do what it set out to do and that is simplify development on most Java EE technologies.

That said, the trade-off for this simplification of Java development is that you need to now have significant amount of knowledge (of the Spring Framework) at your fingertips... (comes with practice and google :) )

>Can't we use Spring for distributed java applications?

Sure you can. Spring has a whole lot of Exporters/FactoryBeans and Clients(Templates) for most conceivable use cases.

like image 25
Ryan Fernandes Avatar answered Oct 15 '22 07:10

Ryan Fernandes