Java Development Environment/Training - Recommendations

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Java Development Environment/Training - Recommendations

Blair Combs
Java is a new development environment for Idaho State University.

We are a new Sungard Banner school just beginning implementation
and have an interest in moving all future development to Java and
joining the JA-SIG organization.

I have been asked to compile options for Java Development & Training.

Is there someone or something such as a web site that can identify a
recommended development environment for Java for those interested in
participating with JA-SIG?

(Environment: Sun Unix, Oracle, Windows Workstation, Sungard Banner ERP)

*Questions:*

1) What is the best IDE for Java?
(ex. Eclipse or Netbeans)

2) What other Java development tools would be important?
                -Application Servers (ex. Tomcat)?
                -UML Modeling Tool?

- For Java Development, what are best available options for:

3) in-person training?
(ex. Sun Education)

4) on-line/web-based training?
(ex. www.javaranch.com, www.ibm.com/developerworks/java)

5) book training?
(ex. Headfirst series, "Java Programming: From the Beginning"-King,
"Effective Java Programming Language Guide"-Bloch, "Code
Complete"-McConnell)

6) other training?
(ex. design theory)

Thanks in advance!

--
Blair Combs
Idaho State University
[hidden email] <mailto:[hidden email]>

--
You are currently subscribed to [hidden email] as: [hidden email]
To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/jasig-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Java Development Environment/Training - Recommendations

Andrew Petro
Blair,
Java is a new development environment for Idaho State University.

Welcome!

We are a new Sungard Banner school just beginning implementation
and have an interest in moving all future development to Java and
joining the JA-SIG organization.

I have been asked to compile options for Java Development & Training.

Is there someone or something such as a web site that can identify a
recommended development environment for Java for those interested in
participating with JA-SIG?

(Environment: Sun Unix, Oracle, Windows Workstation, Sungard Banner ERP)

*Questions:*

1) What is the best IDE for Java?
(ex. Eclipse or Netbeans)

While Netbeans is an excellent IDE and has a strong following, it does not presently have a strong following in uPortal specifically and in JA-SIG generally, as compared with Eclipse.  I highly recommend starting with Eclipse for Java development.  With Eclipse, you're going to have JA-SIGers more likely to share configuration, know how to make it do things.  You're going to get better community support in the context of JA-SIG software, and it's going to align better with the examples, screen shots, and available training.



2) What other Java development tools would be important?
               -Application Servers (ex. Tomcat)?
               -UML Modeling Tool?

Tomcat is a critical piece of your development stack, even if you end up running applications on something else (e.g., an Oracle application server) in production.  The servlet and increasingly portlet standards are well established and largely it is totally fine to develop against the open source application containers, which, again, will have better alignment with what community members are able to assist with.

Pluto also, of course, for portlet development.

Oracle's XE personal edition mini-RDBMS is often sufficient for development RDBMS needs, giving you the Oracle alignment with less of the overhead of using full-fledged institutional DB resources for every development need. (Certainly there's still a place for CI, integrated test, etc., RBDMS schemas as closely approximating your production environment as possible.)


I'd have to say, a Linux development environment often feels more productive than a Windows environment, even if the developed software is eventually going to be served off a Windows server box.  There's a little configuration mismatch annoyance around slash direction, but I find it's more than made up for by the excellent command line tooling etc. available in a Linux environment.  Ubuntu seems to be getting increasing traction.

It may depend on your choice in tools. If you have budget and interest for Stylus Studio, BeyondCompare, a reasonable text editor, other commercial tools, then Windows development environments may be appropriate.  If you're going with the open source toolset (which is quite capable -- it's decreasingly apparent why one needs to pay licensing fees for tools), then it can make a lot of sense to also go with an open source operating system to run them on.

Consider EasyEclipse as a way to get richer starting point with Eclipse plugins.

- For Java Development, what are best available options for:

3) in-person training?
(ex. Sun Education)

I have no experience with in-person Java training.  I'm skeptical of the value of Sun Certified Java Developer etc. certifications.


4) on-line/web-based training?
(ex. www.javaranch.com, www.ibm.com/developerworks/java)

I'm a fan of Java Ranch.

JA-SIG has a rich wiki and email lists.




5) book training?
(ex. Headfirst series, "Java Programming: From the Beginning"-King,
"Effective Java Programming Language Guide"-Bloch, "Code Complete"-McConnell)

Headfirst Java is truly excellent.  Bloch's book is also key.  The rest of the Headfirst books make a lot of sense, since most Java developers are doing web applications.  Shawn Bayern's JSTL in Action is still a must-read in my opinion [1], Rod Johnson's books are excellent background reading and the more recent Pro Spring, Spring in Action, Spring this that and the other thing are all important if you're going to use Spring, and you should.

I highly recommend Domain Driven Design.  In my ideal world it would be waiting on the desk of every developer and reading it cover to cover would be required before one is permitted to touch the keyboard.

Martin Fowler's Refactoring is a classic though imho a hard read.


Being a good developer isn't just about Java skills.  I'm a little worried to hear

> We ... have an interest in moving all future development to Java

I guess it depends on the scope of "all" here.

Java is an excellent, versatile language, useful for many problems.  It is the right language for many tasks, and it is the right language under the circumstances for many more tasks.

But for some problems other languages are more appropriate.  Some respected thought leaders have said a developer should look to learn a language a year (cf. the Pragmatic Programmer recommendations).

You may very well standardize on Java as the go-to language of choice.  But sometimes, PHP is going to be the right answer (e.g., the new Unicon.net site is a Drupal instance further customized using PHP to implement Drupal modules, even though most of Unicon's consulting work in in Java).

If you end up running a .NET application, implementing a new plugin in C# might be reasonable.

You might even implement a uPortal widget via Ruby on Rails and then web proxy it into your portal.

And there's always a need for good shell and perl scripting, the supporting code that makes development productive.


6) other training?
(ex. design theory)

Send your developers to JA-SIG conferences.  JA-SIG conferences tend toward the technical and are a good opportunity to rub elbows with established Java developers in the higher ed space.

Send your developers to No Fluff Just Stuff conferences.  I went to my first such conference this year and was very impressed.


Of course, I also recommend Unicon's training.  We haven't presently pre-packed general Java developer training, but post that initial hurdle, there are offerings around JSR-168 portlet development and around uPortal-specific technical training.

Bringing in a consultant to do mentoring, to start some development projects and incrementally hand them off to your local team, etc. may be a good move.


Welcome to JA-SIG and to the higher education Java crowd.

Andrew



[1]: Full disclosure: I know Shawn personally.



-- 
You are currently subscribed to [hidden email] as: [hidden email]
To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/jasig-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Java Development Environment/Training - Recommendations

jayshao-2
On Aug 29, 2007, at 1:58 PM, Andrew Petro wrote:

Blair,
Java is a new development environment for Idaho State University.

Welcome!

+1 on the welcome! Out of curiosity -- what kind of environment were you on before?

1) What is the best IDE for Java?
(ex. Eclipse or Netbeans)

While Netbeans is an excellent IDE and has a strong following, it does not presently have a strong following in uPortal specifically and in JA-SIG generally, as compared with Eclipse.

Truthfully most JA-SIG projects are relatively IDE agnostic, choosing to rely on standalong tools like ANT & Maven to produce their builds. While Eclipse is largely dominant, there are individuals/institutions who use Netbeans & IntelliJ as well, though if you don't have a strong leaning I would second Andrew's Eclipse recommendation.

2) What other Java development tools would be important?
               -Application Servers (ex. Tomcat)?

Most JA-SIG institutions are deploying onto Tomcat. If you had other infrastructure in place it *might* make sense to standardize on OC4J, JBOSS, whatever is in use, but by far most QA and troubleshooting is done on the Tomcat servlet container, as well as the most experience in production tuning and monitoring.

               -UML Modeling Tool?

JA-SIG has seen relatively little use in the past of formal UML or MDD approaches. I've seen lots of UML sketches to communicate ideas, but like many open-source groups, most ideas are really communicated in code. Though a reasonable drawing program or cheap scanner can help broadcast those quick ideas, I wouldn't invest a lot in modeling tools..

In terms of DB & OS I'd recommend whatever you have the most experience with in-house. Using similar environments (e.g. Oracle up & down or UNIX/Linux up & down) can help prevent occasional painful problems like case-sensitive/insensitive file systems, scripting issues, or DB incompatibilities -- though many people are very productive mixing any and all environments. I suspect a good portion again may have to do with how comfortable your team is with administering a UNIX dev box, or running their own DB instance (though it's nice for people with laptops to be able to work w/o network connectivity)

- For Java Development, what are best available options for:

3) in-person training?
(ex. Sun Education)

Rather than lots of in-person training if you can afford it I would highly recommend adding an experienced Java developer to your team (if you can). The mentorship and shortened learning curve someone in-house can provide (esp. during the "why isn't it working" period *after* the training) is invaluable. It also helps you hit the ground running in a lot of areas, and can help prevent you from locking in poor initial choices.

4) on-line/web-based training? 

InfoQ, TheServerSide, and BEA are also good sites. developerworks can be good, but the topics can also be out there.

Matt Raible is a good blogger to watch for trends in the space.

5) book training?
(ex. Headfirst series, "Java Programming: From the Beginning"-King,
"Effective Java Programming Language Guide"-Bloch, "Code Complete"-McConnell) 

My short list would be:
* Pragmatic Programmer - very little Java, but captures lots of general practices and a quick read
* Headfirst Java - decent intro
* Pro Spring - One of the better intro to Spring books

Effective Java, DDD, Refactoring are all good and I'd probably look at them in that order, but it's probably more worthwhile to pick a few books your whole team can get copies of, read, and internalize to work to a baseline before you try to add to many different texts. Especially when you get into the heavier texts.

> We ... have an interest in moving all future development to Java

It's a growing trend in Higher Education -- welcome to the club :)

6) other training?
(ex. design theory)

Open-source Lightweight Java Architectures are the current best-practice and while I can't recommend a particular training venue I would discourage you from investing heavily in EJB, Vendor Frameworks, or similar training.

Send your developers to JA-SIG conferences.  JA-SIG conferences tend toward the technical and are a good opportunity to rub elbows with established Java developers in the higher ed space.

Send your developers to No Fluff Just Stuff conferences.  I went to my first such conference this year and was very impressed.

+1 to both of these. They're both great bargains and full of outstanding content. JUGs tend to have good stuff too if there's one in your area.

Another thought is -- if you have a local project that you're working on a good way to get mentorship for your team is to start it in an open-source fashion. E.g. if you're implementing portal functionality, or a gateway to a common system (like libraries, SIS, LMS, etc.) it may be possible to find other institutions with similar interests who can contribute a developer to mentor/contribute and help you jump-start.  Distance collaboration over email, and esp. the new generation of Hi-Def videoconference units is surprisingly productive, and less expansive than in the past (the Lifesize units are excellent an < 10k for HiDef video)

Jason

--

Jason Shao
Application Developer
Rutgers University, Office of Instructional & Research Technology
v. 732-445-8726 | f. 732-445-5539 | [hidden email] | http://jay.shao.org



-- 
You are currently subscribed to [hidden email] as: [hidden email]
To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/jasig-discuss
Reply | Threaded
Open this post in threaded view
|

Re: Java Development Environment/Training - Recommendations

Elliot Metsger
In reply to this post by Blair Combs
Hi Blair,

Welcome to the community.  

Blair Combs wrote
1) What is the best IDE for Java?
(ex. Eclipse or Netbeans)
Eclipse will get you the furthest, quickest IMO, since mostly everyone I know uses it.  Its like Tomcat in that it is the defacto IDE.  But you might be interested to take a look at IntelliJ.  The other people I know use IDEA, and it seems like a great IDE.  I've thought of switching myself.

Blair Combs wrote
2) What other Java development tools would be important?
                -Application Servers (ex. Tomcat)?
                -UML Modeling Tool?
Tomcat for sure.  You'll see it used quite a bit, and is the defacto application server for many projects.  HSQL is an embedded Java-based database that you will run into.  Other tools (which aren't specific to Java development but are good ones to have) I use daily are Oxygen XML and Squirrel SQL.

Spring framework is a popular framework.  Dependency injection is at the core of Spring, but it also offers very compelling APIs for JDBC and web application development (amongst other things like caching, etc).

Maven 2 is a tool being used more and more to manage Java projects.  There is definitely a barrier to entry for Maven, even for seasoned Java devs.

JUnit or equivalent unit testing library.  Again, you'll see JUnit frequently.

Blair Combs wrote
5) book training?
(ex. Headfirst series, "Java Programming: From the Beginning"-King,
"Effective Java Programming Language Guide"-Bloch, "Code
Complete"-McConnell)

6) other training?
(ex. design theory)
as far as books:  Effective Java is a must have.  I've not read the other two.  The O'Reilly Learning Java book is what I first used when I got into Java.  Spring in Action is good, that is what I used to learn Spring.

as far as other training, having an understanding of design patterns is good - I would say must (others may argue).  Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Helm, Johnson, Vlissides) is oft-cited and is one to read.  Design Patterns Explained: A New Perspective on Object-Oriented Design, Shalloway and Trott is pretty good too.

In general there are fundamental programming and design principles like dependency injection, unit testing, thinking of objects as things with responsibilities, encapsulation etc that are good to have but evolve over time with experience.  I've found that the key is to stay patient with yourself as you move along.

I'm not sure what in-person training for $$$ will get you, but it may be a quick way to get your feet wet.

HTH,
Elliot