Z
Z
zyrik2013-05-21 11:26:01
Java
zyrik, 2013-05-21 11:26:01

Recommend a Java based technology stack for a web application?

Please recommend a technology stack for a startup. The requirements are as follows:
1. Java. All participants are familiar with this language, so only it is considered.
2. The main functionality of the site is to display information from social networks, so a framework is needed that can simplify this task.
3. Scalability. If you like the service, then you will need to somehow expand it later.
4. Modern. Those. we would like to work with timeless technologies.
5. Extensibility. Those. the possibility of replacing some components.

Answer the question

In order to leave comments, you need to log in

5 answer(s)
R
Ruslan Lopatin, 2013-05-21
@lorus

Spring Framework of course. Unless of course you do not want anything particularly original (or paid). For integration with social networks, you can also search for individual components. Even if they are not natively integrated with Spring, anything can be integrated into it.
But the web stack in Java, how to put it mildly, is unnecessarily overloaded. How about not using it at all? Hire a good front-end developer, let him write you a fully dynamic UI (for example, jQuery UI), and your back-end in this case will be just a RESTful service. It’s both modern and fashionable, and you don’t have to bother with heavy technologies like JSF with their ten-story abstractions ...

M
mrstrictly, 2013-05-21
@mrstrictly

Of the modern popular frameworks with a very low (in my opinion) entry threshold, I would first of all cite:
* Play! Framework playframework.com/
* Grails www.grails.org/
But personally, I have no experience with them, I just studied, got an idea, because. at work I deal with self-written solutions based on Spring.

M
MrMig, 2013-05-25
@MrMig

I will add my opinion (I have experience in developing both enterprises and startups):
Spring Framework.

  • Great for large projects, and projects that will need to be supported for a long time.
  • It is desirable to have 1 good spring specialist, otherwise it takes a lot of time to build the right process (after all, this is an enterprise technology).
  • Enterprise standard de facto.

Grails.
  • It is written in groove (java with sugar + dynamics), which is objectively more pleasant
  • Great solution for prototyping and web based CRUD systems.
  • Has a set of standard practices and a bunch of plugins

Play 1.2
Conceptually, this is the same framework as Grails.
The main thing is not to confuse it with Play 2 (scala framework, redesigned architecture. You can write in Java, but it’s not convenient)
  • Similar to Greils, but main language is Java
  • Low entry threshold
  • Uses standard Java solutions for related technologies (SQL ORM = Hibernate for example)
  • Suitable for prototypes
  • Stateless by default

In summary, Spring is great for medium-to-large projects with a potentially long lifespan. Greils and Play - great for prototyping and testing ideas, as well as pure web layers without scary business logic.
If you want to "test the idea in the field", I would take Play 1.2 / Grails + AngularJS. This will allow you to file the prototype much faster than on the same Spring.

A
asm0dey, 2013-05-21
@asm0dey

GWT + spring4gwt + spring data jpa

S
Snowindy, 2013-05-22
@Snowwindy

In addition to the authors of the other answers, I want to add one interesting detail about the development of web applications and their architecture.
Some web frameworks are designed to take on many database functions (for example, Grails uses a very convenient "GORM" ORM for this). Thus, choosing a similar framework and not having much experience with it, and looking at network examples of applications like PetStore (i.e. pocket applications for an example of the framework), you can accidentally mess up so that a functionality lock occurs inside a web application.
Example: By chance, it may happen that all the logic of asynchronous message processing ends up inside a web application. I saw it. The web app took 5 minutes to launch...
Immediately consider this when choosing an architecture, separate the functionality into layers.
For example,
1. backend for all non-web application logic in Spring
2. Grails front, only what is needed
3. Both modules can look at the same base, so you can use the best of both worlds, for example Spring -Data-JPA for the backend and GORM for the front.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question