Is it worth my while to learn Java Web Services?
November 29, 2009 8:48 PM   Subscribe

Is learning Java web services a good decision in terms of the future job market?

I'm trying to get into something that I hope will have a promising future in terms of employment. I've quizzed a couple of Java programmers and they say the future is REST and SOAP. I was wondering about what the Mefi community thinks.
posted by zorro astor to Computers & Internet (9 answers total) 3 users marked this as a favorite
Web Services (which can mean many things to many people) continues to be an excellent cross-platform/cross-language way of performing communication between software systems across a network. As a programmer this a very relevant skill to have in your toolkit. Now which Java implementation of SOAP and REST you should learn is a question I'm not currently able to give you an opinion on.
posted by mmascolino at 9:23 PM on November 29, 2009

Well, the *present* is REST and SOAP. I don't really know what the future is and probably no one else does either. There are a lot of very interesting things you can do with web services and it's definitely a valuable skill to learn.

With most languages there's not much *to* implementing a web service, and not much *to* making a client either - which is kind of the point, there's a straight-forward standard way to do things and most languages just directly support that.
posted by RustyBrooks at 9:49 PM on November 29, 2009

I wish more programmers got enough rest and used soap everyday. Bah-dum-cha! Seriously though, learning Java (JSP, J2EE?) for server side web stuff is probably still a good idea. However, the related technology is changing so rapidly and branching out into different languages that can all more or less solve the same problem, that your best bet is to simply pick a set of technologies that seem to be popular and on the upswing, and start a project around those. As far as what is going to be a good decision for the future of your career, having actual experience and a decent portfolio has always gone further in my experience than a bunch of acronyms and certificates. A good programmer is often having to learn new languages and technologies, there are much worse places you could start than with Java.
posted by sophist at 11:17 PM on November 29, 2009

A good programmer is often having to learn new languages and technologies, there are much worse places you could start than with Java.

This. Far more important than which languages you know is which languages you can pick up in a hurry when called upon.

REST and SOAP will be gone in a few years, replaced by something else. But if you learn how to write good object-oriented code in general, and about HTTP communication in general, and get good at algorithms and structured data types... well, you'll be ready to jump into any new language in a week or two...

...which is about how much time you'll have between "you're hired" and your first day on the job with that new language, anyway.
posted by rokusan at 11:37 PM on November 29, 2009

Just look on or monster at what kinds of skills people are asking for. Java web services will be around for a long time, just look at COBOL.

But I think if you want to work on more interesting, forward-looking places then I would try to learn Scala/Python/Ruby/Clojure/etc. It isn't so much that they are widely used, but they (I think) signal that people are really interested in programming and learning new things, rather then being stuck in a particular mindset. If I were hiring programmers, that's definitely something I would look for.

Of course, I'm not so it hardly matters.
posted by delmoi at 2:33 AM on November 30, 2009

REST just means "working the way the Web works". It's the Right Way To Do Stuff. It's not really a new idea, or a formal specification. There is no REST "library" as such.

SOAP is nonsense. Stay away. It's horribly complicated and fundamentally at odds with how the Web was conceived.

Java is a good language for implementing web services. All you need is a Servlet Container, an HTTP client and a decent XML library and you're off.

Whilst it's a good choice for a team working on a complicated project, Java can be a laborious language to work in. Python and a framework like Django will get you good results with less effort.

Personally, I've never got on with Ruby but lots of people love it.

The most important thing to do is to get a good understanding of how the web itself works. In the context of REST, building "services" is really just the same as building "sites".
posted by col at 2:50 AM on November 30, 2009

Java is a good language for implementing web services. All you need is a Servlet Container, an HTTP client and a decent XML library and you're off.

Uh, Java has a built-in XML and HTTP Client library that works fine. The XML DOM is very close to the w3c DOM standard, which makes it oddly non-java-styled (for example, it doesn't use iterators, which is extra lame with the new simplified for loops) but it's not that hard to use at all.

The URLConnection class also works fine for most of things you would use it for. (as in, making HTTP connections, changing headers, uploading the request and downloading the result).

Other then the server, Java SE is ready to call web services out of the box, with no dependencies. You do need a server to host your servelets/JSPs, though.

Java EE comes with glassfish. I usually use tomcat, though. Mainly because I got started quite a while when it was new so I'm used to setting it up. It's pretty easy if you run it in standalone mode.
posted by delmoi at 3:06 AM on November 30, 2009

The most important thing for you to learn isn't a language, it's a set of skills. It's how to structure a web application, and how to talk to a database, how to use a memory cache, when and how to use a remote protocol like REST. Those principles are present in any web server development environment.

Java is the most mature of the web server development systems in common use, so if you learn the Java way it will be good background. Also a lot of companies build big / complex web servers in Java, it's a salable skill. The Java server world is enormous, particularly when you start exploring all the various J2EE options. To a lesser extent .NET is also viable as a big safe enterprise server framework.

But honestly, the cool kids these days aren't doing much Java. It's stodgy and slow to write code in. Ruby on Rails has the most mindshare for the hip new way to do things, and Python with Django is a close second. Those platforms have problems and more conservative enterprises are rightly skeptical about using them. You'd be well served by learning some of both approaches. Know how to do the Java thing for your day job, then learn Rails or Django for the fun stuff you do on weekends. I'd be remiss if I didn't also point out Scala, an up-and-coming language that may make Java less stodgy.

The REST/SOAP thing is somewhat orthogonal; those are mechanisms for integrating a remote server into your system. You can use REST or SOAP in a server or client in any language. Agreed with col that SOAP itself is a lot of nonsense, but the corpse is still quite lively.
posted by Nelson at 8:35 AM on November 30, 2009

If you want to stay language agnostic, you may want to research service-oriented architectures. And at a higher level of abstraction, the concept of an enterprise service bus.

If you're interested in REST, there's really no better place to go than Roy Fielding's dissertation. Start there and you'll have a better appreciation of all the hand-waving that goes on when people talk "REST."

As for SOAP, thirding col; this is not a technology on which you want to hang your entire career hat. If you are going to do web service development, there are some concepts you should be familiar with, e.g. WSDL, but unless your goal is to program SOAP frameworks, focusing on SOAP will be very constraining.
posted by Loser at 2:52 PM on November 30, 2009

« Older Whatever happened to Duty-Free shops in Australia?   |   What is the best recent song by a younger artist? Newer »
This thread is closed to new comments.