Learn me Java
January 13, 2014 10:18 AM   Subscribe

What are some analogous technologies in the Java world, compared to the MS stack?

I am a seasoned MS Enterprise App Architect (among other IT things).

I have been asked by my employer to look at a problematic Java team (young, naive to enterprise-scope concerns, very monolithic product to date). I've done Java coding to spec for small-ish server-side processes. The language is not an issue for me.

I need to spin-up fast on the technologies in a general way (e.g. concurrency coding, Swing expertise, etc will not be my within my purview).

What are the analogous technologies in the Java world? While I know some of these generally, what are your opinions?

Server-Side Processing
Web Authentication/Authorization
ORM (e.g. Entity, Dapper)

Are the IOC advantages of Spring worth the complexity/learning curve?

There is a lot recently published on OSGi - is this modularity concept worth exploring?

Is there a title (or set of titles) that could give me a significant edge?

I know I can't become a J2EE architect overnight, but that's not the goal. The goal is for me to be able to advise leadership for next steps for this team. Hiring a J2EE guy might be a recommendation, for example. Alternatively, the shop has better MS experience so maybe change the platform to suit the skill-set. I need to provide options, is all - and maybe point he team toward better technology choices (within the java ecology).

All thoughts are welcome - thx - joe
posted by j_curiouser to Technology (2 answers total) 6 users marked this as a favorite
Best answer: I'm also an MS guy, but I've been on two big (6+ month, 4+ developer) Java projects in the past five years. The skills translate very well, but having just one expert on the team to bootstrap things will help guide everybody to success.

Here's AN answer to your question. It's not THE answer as the Java ecosystem is much bigger than MS's so... TIMTOWTDI. :-)
  • Server-side processing
    • JSP files are like ASPX files (sans code-behind)
    • Servlets are like Web Application Projects
    • A Servlet Container is an application that runs servlets, so that's like ASP.NET itself, except that there are many implementations with different pros and cons. Imagine that instead of System.Web containing all the code necessary to instantiate and run your web site, instead it just defined a bunch of interfaces, and somebody else had to actually implement those interfaces to run your ASP.NET code. That would be your servlet container. You'll probably use Apache Tomcat.
    • A web server (frequently Apache HTTP Server) will hand off control to a servlet container in the same way that IIS passes control to ASP.NET.

  • ASP.NET MVC => Spring MVC.
    • You can use JSP for the templating, just like you'd use ASPX files for ASP.NET MVC templating.
    • You can also use FreeMarker, Velocity, or some other template engine instead, like you can use Razor instead of ASPX (they look nothing like Razor though)

  • Web Authentication / Authorization => Spring Security

  • ADO => JdbcTemplate, again a part of Spring, is similar to SqlCommand, though it's also been compared to Micro-ORM frameworks like PetaPoco (source)

  • ORM => Hibernate is the 1000 lb gorilla. If you've used NHibernate you'll figure out Hibernate quickly. Frequently people will use the JPA adapter which is a "standard" way to connect to many different ORM's, but you can commit to Hibernate instead if you want. Model mapping is usually done using Annotations... I'm not aware of a fluent configuration like Fluent NHibernate (but that may have changed)

Spring is humongous, but it's not monolithic. It's more a collection of very useful things under one highly configurable umbrella. Dependency injection is one of the things it does very well. Grokking configuration is the biggest hurdle, though I understand you can do more of that in code now whereas before it was all XML. Anyway, if you can get through configuration you'll find Spring is actually quite a lot of fun. For example, Spring Data does some really nifty stuff with interfaces that has no equivalent in .NET.

Cover-my-ass statement: I am really a .NET guy so a Java person may be shaking his head right now at inaccuracies above. But I hope it helps and good luck with this project!
posted by rouftop at 12:21 PM on January 13, 2014 [1 favorite]

Response by poster: thx, rouftop. good starting point. anyone else, feel free to chime in, too.
posted by j_curiouser at 10:47 AM on January 14, 2014

« Older Recommendation for a couples/family therapist in...   |   Oh lenseeesss, I looooovveeee yooouuuuuu Newer »
This thread is closed to new comments.