Ari
Ari

Reputation: 4191

Taking the next step with java development?

I want to take the next step in java web development, I am hoping to get insight & feedback on: what my next steps should be and how best to take them.

While learning the basics of java web development, I put together a simple web app that performs simple accounting and financial calculations. The web app is on a single jvm, uses Tomcat, and has standard web functionality - i.e. login/logout, basic security, etc.

How can I make this web app more "enterprise ready" - distribute functionality of tiers over different servers/jvms, HA, balance-able, etc.

What do I need to know/learn? - i.e. EJB3 or Spring Framework (seems spring is better option), REST and/or SOAP, etc.

How would one recommend (books, websites, etc.) I learn the "requirements" (see preceding line)?

Thanks!

Upvotes: 4

Views: 776

Answers (10)

Jé Queue
Jé Queue

Reputation: 10653

Allow me to state that "enterprise"-ready does not necessarily imply scale-out solutions, many, many enterprise Java applications are running on larger systems requiring long-running-systems skill of their own.

I recommend mastering the Java language and runtime, understanding how bytecodes and loading traverse the JVM vs. focus on any given framework.

Speaking of frameworks and if you really have the time, try recreating an application framework yourself. Try and re-invent the wheel. IMO it is an excellent lesson in why frameworks themselves exist and teaches one to employ the features instead of always trying to work around them.

One more thing, never forget the database. I don't care what that looks like Oracle, MySQL or NoSQL, but become also an equal master at the data store.

Upvotes: 0

Dean J
Dean J

Reputation: 40288

You might look at AppFuse, which is a bundle of Java things together.

Or, you might take a look at a few more technologies to play with and add in:

  1. Version Control - SVN
  2. Tools - Ant or Maven
  3. Framework - Spring, Seam, Struts
  4. ORM - Hibernate or iBatis
  5. Test Driven Development - JUnit, Emma
  6. Continuous Integration - Hudson

I'd also read the Pragmatic Programmer and/or Code Complete.

Upvotes: 0

Priyabrata Hota
Priyabrata Hota

Reputation: 151

I would suggest the following books/tutorials are a must for every Java developer:

  • Manning: Spring in Action - 2nd edition
  • Manning: Java Persistence with Hibernate
  • Core JavaServer Faces
  • Adobe Flex ( Adobe website video tutorials )
  • Effective Java

Apart from the standard technologies above you must be familiar with

  • Different testing frameworks , JUnit is a must
  • Build tools like ANT and Maven

Also you can build small projects by downloading trial versions of MyEclipse or Flex Builder.

Upvotes: 1

Dafydd Rees
Dafydd Rees

Reputation: 6983

You could vastly reduce the time taken to build your apps by learning some Test-Driven Development.

Try learning JUnit - it's becoming a core skill now, even in unagile shops.

If you're focussing on the web, try out Selenium - which has a Java controller to drive your tests from Java test cases.

After investing a bit of time in TDD will pay off no matter which frameworks or apps you work on. If you learn to test drive your code, you'll end up with smaller, cleaner code and less debugging.

Upvotes: 0

user203612
user203612

Reputation:

Spring or Tapestry would be good options for new learnings. Does your app use any web services? If not work those in. Work with other application servers like JBoss and Weblogic and note their nuances with java. I'd also recommend learning Maven and work that into your build/deploy process.

Have fun, Mike

Upvotes: 0

Upgradingdave
Upgradingdave

Reputation: 13056

I suggest that you create small java experiment projects for each new framework/library that you want to learn.

I've had good success using maven to help me quickly and consistently create java projects that I use to experiment with one technology at a time, such as Spring, Hibernate, etc. I use maven's site life cycle to record notes about what I learned and to document how to build and run each project. So, now I have 20 or so projects that I can use as baseline projects, one for each framework, to build upon.

Also, I prefer buying and reading books rather than relying on google and websites to learn new frameworks. Seems that I'm able to learn a lot faster this way.

I also suggest that you write web apps that you, yourself, would want to use. Or write a web app that solves a problem you've been having. I've found that I learn a lot more this way rather than simply copying and pasting from examples in a text book.

Hope that helps, - Dave

Upvotes: 0

OscarRyz
OscarRyz

Reputation: 199205

Have some real users using your application. You'll be amazed on how many "new" features/improvements can be performed in your app ( and the technologies you'll learn to satisfy those requirements ) by having real users using it.

Upvotes: 1

Esko
Esko

Reputation: 29367

EJB or Spring? gets asked quite a lot nowadays, here's a decent related question about them.

Upvotes: 1

Alexandre
Alexandre

Reputation: 1026

In my opinion, you should try different approaches for a same problem, so you could compare the pros and cons of different tools and frameworks.

For instance, try to build an application using EJB, and then the same application using Spring. Take the presentation layer of your code written with JSF and then rewrite it using Tapestry.

I think this will be very helpful to you, as you'll be able to make best decisions when choosing tools for your future developments.

Upvotes: 5

JB King
JB King

Reputation: 11910

A few things to consider, as food for thought:

  • How good is the error handling/logging of the application? For example, if the user tries to put in X in for a currency value, what does the application do?
  • What is configurable within the application from the user and what is in configuration files and what is in a database with regards to configuration? Do you have passwords encrypted within the application?
  • What patterns would used in building this application? Are there patterns you could see using now that you have a prototype?
  • Is this application ready to handle different currencies and languages?
  • What happens if someone leaves the screen for a few hours and tries to use a form?
  • What administrative functionality does the application have?
  • Does it handle the case where the user has JavaScript disabled?
  • What are the limitations of your application, IOW what can't it handle the way it is?
  • Have you considered trying to write a manual for the application?

Upvotes: 2

Related Questions