views:

303

answers:

6

I want to develop a web application, like an online scheduler. (Yes I know it's been done a million times.) Most of my experience is in Java, so I want to leverage that when considering technologies.

I've primarily been a systems developer with little exposure to UI programming, so I think this is where I will need to do most of my learning.

Do you have any suggestions on the technologies I should focus on? I want to focus on technologies that are marketable and easy to learn.

So far this is what I think I need for a 3-tier architecture (from the ground up):

  • Database (likely MySQL or PostgreSQL) - SQL, JDBC
  • Back end server - Java
  • Web server (Tomcat) - JSP, Servlets
  • Web Framework - Tapestry (weak on this, any better alternatives?)
  • Browser technologies - HTML, Javascript, CSS (need to learn)

I've heard about "Rich internet application" development tools such as Flex and Silverlight, but I'm not sure about the market for such technologies.

Edit: Seems like there's a lot of mention of Spring/Hibernate, so I'll look into that. I appreciate the feedback.

+1  A: 

I think you've got your bases covered pretty well.

You'll probably want to look into some frameworks / libraries to make it easier on you.

Web Framework - Wicket / Stripes / JSF / Tapestry (component vs request based frameworks)

Javascript Library - JQuery / YUI / Dojo

As for your template language you could use JSP / Velocity / Freemarker.

Just study up on the frameworks and tools maybe try a few out and see which ones work best for you.

Just FYI I'm currently using.

  • Apache - web server
  • Tomcat - servlet container
  • MySQL - database
  • Stripes - request based web framework
  • YUI - for ajax
  • Spring - dependency injection
  • Hibernate - Object Relational Mapping
  • jsp - to dynamically generate html
ScArcher2
+2  A: 

I'd personally add Spring to this list. Dependency injection is definitely a great technology to learn, and Spring lets you use it as much or as little as you like, in my experience.

You haven't explicitly mentioned unit testing, but that should certainly be part of the mix - I don't have much experience outside JUnit as an actual testing framework, but there's also EasyMock and JMock (amongst others) for mocking of dependencies.

None of that's web-specific, but still important stuff IMO :)

Jon Skeet
Good point I forgot about spring it definitely fits in the mix!
ScArcher2
Unit testing is a must. +1
Adeel Ansari
+1  A: 

If you are going the with a Java back-end, I would recommend Hibernate for your JPA, JSF with RichFaces (AJAX/skinning) and Facelets (view rendering/templating) for your front-end, and Seam to put it all together. It's a wonderful combination.

Zack
+1  A: 

If you go with Spring, then you may just use Hibernate going to mysql, and you can have everything you need there.

After you write it, and you want to start improving on it, then perhaps start looking at doing more on the browser side, but, initially, you may want to just have it be without ajax calls.

The Spring Framework documentation may be helpful, as there are many parts to Spring that you can use, optionally, such as Spring MVC, Spring Framework, Spring Webflow and Spring Security, if needed.

James Black
+2  A: 

I would have to disagree that there isn't a market for Rich Internet Application. There is actually a growing trend in enterprise size applications being made as RIAs. The advantage with RIA over normal web applications is usability. You get all the advantages of web application but still are able to keep the desktop-like user interface.

You say you come from a Java background and haven't had much experience with web technologies. Well, I have to say that you really sound like an ideal user candidate for either GWT or IT Mill Toolkit (based on GWT). Both are frameworks which allow you to create rich internet applications purely in Java! No HTML or JavaScript skills required. You will have to learn CSS to make your own theme for the application.

Both the frameworks are open source and suite very well for commercial use. What separates IT Mill Toolkit from GWT, is that it is server driven, meaning business logic is implemented and ran on the server rather than as JavaScript in the client browser (which is the case with GWT). This server-driven architecture makes the application much safer from a software security point of view. The advantage of GWT over IT Mill Toolkit is the larger user community.

What comes to the ORM frameworks, Hibernate is quite popular. However, I'm not very fond of it, because even though it technically implements Java Persistence API, it doesn't always behave as expected and you'll have to use a lot of hibernate specific annotations, which ties your application pretty hard to hibernate (bad thing!) and you cannot just easily swich to another JPA provider if you'd like to. Antoher ORM framework implementing the JPA is EclipseLink. I haven't personally used EclipseLink in enterprise size applications (because I still haven't had the chance to), but I'm using it for a smaller project and it seems to be quite nice. EclipseLink is open source and its lisencing is friendly for commercial use. EclipseLink is continually developed by Oracle, so its backgrounds are solid. It is actually based on TopLink, which is Oracle's closed source JPA implementation.

Hope this helps :)

Kim L
A: 

Asked basically the same question some time ago, with some pretty useful answers:

Tools for website development

sharkin