Verbose language. But more importantly, needlessly verbose and badly designed apis.
JSP:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<c:choose>
<c:when test="${emails.unread != null && fn:size(emails.unread)}">
You have ${fn:size(emails.unread)} unread email(s)!
</c:when>
<c:otherwise>
You have no unread emails!
</c:otherwise>
</c:choose>
Saner templates: You have ${emails.unread ?: 'no'} ${emails.unread?.pluralize('email')} !
http://paulbuchheit.blogspot.in/2007/05/amazingly-bad-apis.h...> But I can't help thinking to myself, "I could do this much faster if I were using Java," primarily due to my relative experience levels.
If you are more comfortable with Java, and are just beginning with Rails, it goes without saying you will miss Java. That's not a very useful metric. Give rails 4 weeks, then compare them for ease of use and expressiveness.
If you don't have a month to learn rails, then stick with Java.
> But also because I haven't seen anything critical "missing" from Java, preventing me from building the same application.
"It can be done with Java" isn't the same as "It can be done concisely with Java".
I would say learn Rails/Django. Use them for CRUD. I have checked Java ecosystem recently, and they are still far behind in terms of expressiveness when it comes to regular web programming. Play framework is close - I haven't used it personally apart from toy examples.
For long running services, depending on your needs, you can either write it in Ruby/Python on top of some infrastructure tool(resque, zmq, celery....), or you can write in in Java if your service is CPU intensive.