﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Sven Helmberger commented on My Java Experience</title><description>While it certainly would be nice to have first class functions in Java, the lack of it is mostly an inconvenience because it requires you to write a strategy interface what could be a function reference otherwise.
  
  
The interface also forces you to explicitly define your function and self-documents all places of use,which can be really helpful for ongoing development.
  
  
Many things that are really nice to have while writing the code in the first place are not really helping you maintain it. 
  
  
</description><link>http://ayende.com/4365/my-java-experience#comment39</link><guid>http://ayende.com/4365/my-java-experience#comment39</guid><pubDate>Tue, 09 Feb 2010 11:52:29 GMT</pubDate></item><item><title>John Sonmez commented on My Java Experience</title><description>You have hit the nail on the head with this post.  
  
I had been doing .NET development for quite a while and have been doing Java for the last almost 2 years, and I had the same experience.  It is very frustrating trying to do some simple things and searching through pile and piles of dead frameworks and tooling.  The language needs to move forward.  I do understand that J2EE has moved forward, but there is still a large amount of confusing old EJB stuff, because it changed so much.
  
  
It is pretty funny though, all the other Java developers always say to me.  I know what you are going to say... "IF ONLY I HAD FUNCTION POINTERS!"
  
  
I do like Java Enums and the ability to do anonymous overrides on classes for unit testing.
</description><link>http://ayende.com/4365/my-java-experience#comment38</link><guid>http://ayende.com/4365/my-java-experience#comment38</guid><pubDate>Wed, 20 Jan 2010 05:07:26 GMT</pubDate></item><item><title>Sven Helmberger commented on My Java Experience</title><description>Java isn't meant to be a kitchen sink language.. Do you take the many library bindings in C as a proof that C sucks, too?
</description><link>http://ayende.com/4365/my-java-experience#comment37</link><guid>http://ayende.com/4365/my-java-experience#comment37</guid><pubDate>Sun, 17 Jan 2010 01:02:38 GMT</pubDate></item><item><title>Terry commented on My Java Experience</title><description>Ayende, I warned you about JEE development!!!! :-) It really is a dinosaur!!! I've heard a lot of talk about how everything will be ok if you just add one more framework but it's clear to me that the EXCESSIVE amount of frameworks that are needed to be reasonably productive in the Java ecosystem reflects a fundamental deficiency in the language. Unfortunately, Sun stopped working to improve this long before their company collapsed. 
</description><link>http://ayende.com/4365/my-java-experience#comment36</link><guid>http://ayende.com/4365/my-java-experience#comment36</guid><pubDate>Sat, 16 Jan 2010 16:48:32 GMT</pubDate></item><item><title>Sven Helmberger commented on My Java Experience</title><description>First of all, you're expecting the wrong thing. There seem to be quite some differences in the general approach to things in .NET and java. Sun/JSP always try to define a general way of doing thing everyone can live with. Some results are good, some are just silly, but the nice thing is, you can absolutely ignore the parts you don't like, that don't really work for you, and in my book it's exactly what makes you a good Java developer. With Sun/JCP there's usually an open API that can and is implemented by different companies/orgs with different goals. The focus is not so much ease of development but basic enabling.
  
  
Servlets are no Singletons. You can create web applications with lots of instances of the same servlet, if you want to. Servlets are just stateless, because defining the way state is handled would have been too much of a limit.
  
  
There are hundreds of webframeworks out there (all usually compatible with every servlet container there is) that all have different approaches about how a web application should be done.
  
  
Just to pick some examples: GWT is very different from Spring Web MVC, which is different from Spring Webflow which is different from Grails. 
  
  
Some frameworks pride themselves in using no or only very, very little XML, some just can live with XML because they can live with it and focus on other aspects. We're about to release our own model based web development framework in which you can create applications that are like 95% XML with some groovy scripts mixed in.
  
  
EJB is just silly to me and I always avoided it. EJB3 might be an improvement, but it's not like I've been waiting all this years for EJB to come around. Personally, I find the spring framework very useful (more XML!), but still, I will only use the parts that I find useful and ignore the parts of spring where I don't see that.
</description><link>http://ayende.com/4365/my-java-experience#comment35</link><guid>http://ayende.com/4365/my-java-experience#comment35</guid><pubDate>Sat, 16 Jan 2010 11:03:46 GMT</pubDate></item><item><title>Chris Wright commented on My Java Experience</title><description>@meo
  
Modern generational garbage collectors are good with dealing with lots of small allocations. Regardless, I'd rather deal with memory issues than threading issues.
</description><link>http://ayende.com/4365/my-java-experience#comment34</link><guid>http://ayende.com/4365/my-java-experience#comment34</guid><pubDate>Fri, 15 Jan 2010 21:58:05 GMT</pubDate></item><item><title>Mike commented on My Java Experience</title><description>"...but I would like to see something like the JCP in the .NET world."
  
  
Me too! But how to start that, who should we poke at Microsoft? Scott Gu? Somasegar? Miguel? Is it a job for Codeplex Foundation? Is Microsoft even interested?
</description><link>http://ayende.com/4365/my-java-experience#comment33</link><guid>http://ayende.com/4365/my-java-experience#comment33</guid><pubDate>Fri, 15 Jan 2010 21:48:05 GMT</pubDate></item><item><title>meo commented on My Java Experience</title><description>  
Something must be wrong with the date on this article!!!
  
  
hmm it does say 2010 but talks about stuff from the beginning of the century.
  
  
Struts, xml, jsp - When those tools were popular  what did MS have? ASP+basic or jscript on the serverside (believe me I was there and You dont know "pain").. JSP does not equate ASPX. JSP was ASP+++++. JSF is comparable to ASPX but I would actually say ASPX+. 
  
  
And why throw himself at EJB? Did he need declarative distributed transactions, or did he want to scale his business layer independantly of his client and did he ever try to do the same with MTS?
  
  
Take it from someone whos been doing Java for 11 years and C# for 3 years: They are actually very similar even if you can find one or two frameworks that differ significantly. 
  
  
And his comment on singletons.. hmm thats funny. Once this guys get to build really big applications where scalability is a requirement then he will learn to appriciate the singleton. What does he think his C# garbage collector is going to do once his application is put under pressure and start spitting out millions of objects per second?? Yea its gonna break its neck.
  
  
Anyway learning JavaEE in a week - I dont recommend it. Any language I have learning in the past year have cause me at least a few months of frustration. Entertaining read though :)
  
</description><link>http://ayende.com/4365/my-java-experience#comment32</link><guid>http://ayende.com/4365/my-java-experience#comment32</guid><pubDate>Fri, 15 Jan 2010 20:53:39 GMT</pubDate></item><item><title>Cay Horstmann commented on My Java Experience</title><description>Oh boy--you haven't been learning Java EE but something resembling J2EE circa 2001. Servlets? JSPs? Why would you want to learn that in this day and age? That's like saying you don't like .NET because those CLR bytecodes are so cumbersone to program with.
  
  
I suggest you learn Java EE as it exists today, with JSF, CDI, easy session beans (without boilerplate or XML), and JPA. You'll recognize JPA--it's just like Hibernate :-)   
</description><link>http://ayende.com/4365/my-java-experience#comment31</link><guid>http://ayende.com/4365/my-java-experience#comment31</guid><pubDate>Fri, 15 Jan 2010 18:35:56 GMT</pubDate></item><item><title>Chris Carter commented on My Java Experience</title><description>I've been playing around with Java a little bit in the past few months, and I have to say there are a few things I think they really did right:
  
  
1. virtual by default - all of the arguments I've heard against this seem like they could be solved with a compiler directive or a class level decorator to reverse it.  The lack of this in .NEt is an inconvenience that doesn't need to exist.
  
  
2. Inner classes on interfaces and inner class private data sharing
  
  
3. The ability to recompile a single class and hot "update" an application, or just run that class to test it by itself (without the need for other tools)
  
  
4. Application servers - as in the container, the ability to have a whole bunch of hard service dependencies supplied by the server as opposed to ported around by your application.  This lets you do things like unified logging and monitoring without a lot of fuss
  
  
5. Deployment as a single file - I wish we had WARs and EARs in .NET.  ILMerge works in some cases, but doesn't manage the flexibility you have with the formentioned packaging options.
  
  
There are probably a few that I'm missing, but I'm not fully into Java development at this point, just dabbling.  I prefer .NET, but like Ayende I'm feeling the itch to learn something new and expand my horizons.
</description><link>http://ayende.com/4365/my-java-experience#comment30</link><guid>http://ayende.com/4365/my-java-experience#comment30</guid><pubDate>Fri, 15 Jan 2010 16:41:48 GMT</pubDate></item><item><title>tb commented on My Java Experience</title><description>... interesting read.
  
Sterile straight jacket of the .Net vs. mock of Java world. Come to think of it as much as people gripe about the early EJBs, at the same time there was plenty of room for other things to evolve. Struts, then Spring just to name a few and now Grails just to mention one. Call me wrong, but leaving this much room for growth and evolution was the real genius behind creating the Java echo system. I doubt that any benevolent dictator can compete that long term ( and VERY LONG term especially ). 
</description><link>http://ayende.com/4365/my-java-experience#comment29</link><guid>http://ayende.com/4365/my-java-experience#comment29</guid><pubDate>Fri, 15 Jan 2010 15:45:39 GMT</pubDate></item><item><title>Demis Bellot commented on My Java Experience</title><description>Sounds like you're having a pretty common experience for devs that have had to use Java from C#/.NET
  
  
The JVM ecosystem is strong with a thriving open-source community unfortunately the Java language has stagnated for the last few years and is now lacking a number of language features which requires more effort and less readable then the equivalent code in C#. 
  
Type Inference, Automatic Properties, Indexers, Events, Auto Boxing, Nullables, Delegates, Lambda's and LINQ are just some of the features which make C# far more joyable to work with than Java.
  
  
Unfortunately rather than trying to improve the Java language, Sun themselves have chosen to invent another language (JavaFX) to be competitive in the RIA space. The defficiency in the Java language is also the reason there are a large number of other languages targetting the JVM. Scala, JRuby, Grails and Jython seem to be the leading alternatives for the JVM at the moment. Unfortunately Java still retains the best IDE support which will keep it at the helm for a while.
  
  
Despite the deficiency in the language they have a superior community which is the reason why most of the break-through frameworks and technologies are still invented in the Java space (i.e. log4j, JUnit/JMock, Hibernate, Spring, Lucene, etc).
  
  
Even though there are a lot of good reasons to remain in the Java ecosystem I personally find that most of the frameworks are too academic and over architected requiring too much effort, configuration and third party components in order to get anything done. You're mileage may vary but I find myself more productive with C#/VS.NET+R# which is the reason for my switch. 
  
I've also found IKVM to be invaluable to run 3rd party java components for which there is no equivalent port in .NET yet.
</description><link>http://ayende.com/4365/my-java-experience#comment28</link><guid>http://ayende.com/4365/my-java-experience#comment28</guid><pubDate>Fri, 15 Jan 2010 15:17:18 GMT</pubDate></item><item><title>Ayende Rahien commented on My Java Experience</title><description>Tom,
  
Why would I want to learn about any of those in a course? Those are projects, I can get to grips with them very quickly. 
  
I am not saying that I now know everything about JVM, but what I wanted to get out of the course was the basics, and that is what I did.
</description><link>http://ayende.com/4365/my-java-experience#comment27</link><guid>http://ayende.com/4365/my-java-experience#comment27</guid><pubDate>Fri, 15 Jan 2010 15:13:24 GMT</pubDate></item><item><title>Jimmy Barnes commented on My Java Experience</title><description>What was the course that you took?  Who gave it?  I'd like to look into it myself.
  
  
Thanks
</description><link>http://ayende.com/4365/my-java-experience#comment26</link><guid>http://ayende.com/4365/my-java-experience#comment26</guid><pubDate>Fri, 15 Jan 2010 14:39:09 GMT</pubDate></item><item><title>Tom commented on My Java Experience</title><description>"Tom,
  
The point wasn't to learn Web dev on JVM.
  
The point was to learn the JVM env."
  
  
Then why not learn Cassandra DB, Hadoop, Clojure or any other really cool and useful technology that uses the JVM? Your education on the JVM is far from complete.
</description><link>http://ayende.com/4365/my-java-experience#comment25</link><guid>http://ayende.com/4365/my-java-experience#comment25</guid><pubDate>Fri, 15 Jan 2010 13:58:20 GMT</pubDate></item><item><title>Ayende Rahien commented on My Java Experience</title><description>Matt,
  
It would be pretty hard to teach me about Hibernate, you realize that, don't you?
  
  
And I am pretty sure that I would waste my time learning Spring in a course vs. on my own.
  
The point wasn't to learn J2EE, the point was to learn the environment, I did just that, and I think it was successful.
</description><link>http://ayende.com/4365/my-java-experience#comment24</link><guid>http://ayende.com/4365/my-java-experience#comment24</guid><pubDate>Fri, 15 Jan 2010 06:26:00 GMT</pubDate></item><item><title>Ayende Rahien commented on My Java Experience</title><description>Tom,
  
The point wasn't to learn Web dev on JVM.
  
The point was to learn the JVM env.
</description><link>http://ayende.com/4365/my-java-experience#comment23</link><guid>http://ayende.com/4365/my-java-experience#comment23</guid><pubDate>Fri, 15 Jan 2010 06:24:51 GMT</pubDate></item><item><title>Ayende Rahien commented on My Java Experience</title><description>Mike,
  
The closest thing to the JCP is the insiders group, but even those have very little effect compared to the JCP.
  
That is both good and bad, of course, but I would like to see something like the JCP in the .NET world.
  
  
As for Servlet Containers, the nearest thing would be the ASP.Net infrastructure. We don't really have something similar, but many of the techniques are still valid, just using a different approach.
  
</description><link>http://ayende.com/4365/my-java-experience#comment22</link><guid>http://ayende.com/4365/my-java-experience#comment22</guid><pubDate>Fri, 15 Jan 2010 06:23:16 GMT</pubDate></item><item><title>Ayende Rahien commented on My Java Experience</title><description>Miguel,
  
I knew what I wanted to learn, and I was aware that I would be hearing a lot of stuff that I already knew (since I am already familiar with web technology).
  
But what I wanted to get more than the course materials was a feeling of how you work with Java, and I got that.
</description><link>http://ayende.com/4365/my-java-experience#comment21</link><guid>http://ayende.com/4365/my-java-experience#comment21</guid><pubDate>Fri, 15 Jan 2010 06:19:56 GMT</pubDate></item><item><title>matt b commented on My Java Experience</title><description>Sorry to hear you wasted your money on a class on J2EE.
  
  
Guess what, people don't use it! EJB, whats that?
  
  
Spring, Hibernate, etc. - these tools make life a lot simpler.
  
  
The great thing about Java is the set of tools and libraries that evolved from the community in response to ugliness that was the J2EE APIs. 
  
  
That's all J2EE really is - not a "platform" but a set of APIs. You are free to not use them, and in 5 years of professional development, I've seen very few people that actually do use them, unless they're pushed on you by a vendor like IBM.
  
  
It makes me sad to read about your experiences because I'm afraid that this course gave you a poor view of "Java" itself.
</description><link>http://ayende.com/4365/my-java-experience#comment20</link><guid>http://ayende.com/4365/my-java-experience#comment20</guid><pubDate>Fri, 15 Jan 2010 04:36:17 GMT</pubDate></item><item><title>Tom commented on My Java Experience</title><description>I'd like some one to explain why you would use anything other than Grails to develop a Web app on the JVM in 2010.
</description><link>http://ayende.com/4365/my-java-experience#comment19</link><guid>http://ayende.com/4365/my-java-experience#comment19</guid><pubDate>Fri, 15 Jan 2010 03:41:36 GMT</pubDate></item><item><title>James commented on My Java Experience</title><description>I switched from Java to .NET in 2002. 
  
  
What I miss in .NET is the much smaller open source ecosystem and community. Most of the guys I enjoy reading in the .NET world go outside of the walled garden and play with things like Linux, Clojure, NoSQL, etc.
  
  
What I dislike most about .NET is the preponderance of people who are basically uncritical Microsoft shills.
  
  
I work with one, and it is a royal pain discussing pros and cons with him, he is so far up Microsoft's backside, all he can do is "Bing" for comebacks whenever I point out deficiencies in Microsoft frameworks...
</description><link>http://ayende.com/4365/my-java-experience#comment18</link><guid>http://ayende.com/4365/my-java-experience#comment18</guid><pubDate>Fri, 15 Jan 2010 03:20:33 GMT</pubDate></item><item><title>dan commented on My Java Experience</title><description>after years in .net land, i've spent the last six months working on a java desktop app project (using netbeans). i actually kinda dig it for the most part.
  
  
the hardest stuff to adjust to was:
  
  
* no LINQ. damn, LINQ is good.
  
* i really miss delegate support. anonymous inline classes are ugly.
  
* the netbeans gui builder is WEIRD. when it works it's fine, but sometimes it just totally vomits on your forms. can be very painful.
  
* events and callbacks are a bit nasty and the performance of that stuff isn't great either.
  
  
refactoring support and some other nice stuff in netbeans is extremely tasty though. overall, i'm quite enjoying it. certainly learning a lot, and the codebase is very clean.
</description><link>http://ayende.com/4365/my-java-experience#comment17</link><guid>http://ayende.com/4365/my-java-experience#comment17</guid><pubDate>Fri, 15 Jan 2010 00:36:08 GMT</pubDate></item><item><title>Angel &amp;quot;Java&amp;quot; Lopez commented on My Java Experience</title><description>EJB should be erased from human history. EJB 1.x, EJB 2.x, were convoluted (I'm trying to use light language). EJB 3.x was too late to fix the damage.
  
  
Hibernate and related open source projects flourished in Java eco systems, thanks to EJB and other Sun "ideas".
  
  
Spring Framework was born from Rod Johnson disgust with past technology as Struts 1.x. 
  
  
JSR are a good thing, we miss in .NET.
  
  
There are more IDEs in Java world than in .NET. But such freedom has a cost: every project, generally, should be supported using the same tools/plugins/IDE that were used in its inception (or rely on endless ant/maven projects).
  
  
Swing (GUI) model has lot of methods, events, but, curiously, in .NET you need to manage a few methods to build something useful. But to use Swing effectively, you must manage more concepts and technicalities. 
  
  
You skipped JavaServer Faces: two way binding in web pages, and more. But I guess it didn't gain enough momentum.
  
  
Angel "Java" Lopez
  
[http://twitter.com/ajlopez](http://twitter.com/ajlopez)  
  
</description><link>http://ayende.com/4365/my-java-experience#comment16</link><guid>http://ayende.com/4365/my-java-experience#comment16</guid><pubDate>Thu, 14 Jan 2010 22:46:34 GMT</pubDate></item><item><title>Mike commented on My Java Experience</title><description>[quote]
  
Java EE =&gt; .NET
  
Servlet =&gt; Http Handler
  
JSP	=&gt; ASPX
  
Listener =&gt; Http Module
  
[/quote]
  
  
But how about these?
  
  
JCP =&gt; ?
  
Servlet Containers =&gt; ?
  
</description><link>http://ayende.com/4365/my-java-experience#comment15</link><guid>http://ayende.com/4365/my-java-experience#comment15</guid><pubDate>Thu, 14 Jan 2010 21:43:46 GMT</pubDate></item><item><title>Ajai Shankar commented on My Java Experience</title><description>Looks like Grails / Groovy took all the rails ideas and ran with it.
  
  
I dabbled with it briefly - am sure you'd find it to your liking.
  
  
And you'll be an expert in it in... half a day :-)
</description><link>http://ayende.com/4365/my-java-experience#comment14</link><guid>http://ayende.com/4365/my-java-experience#comment14</guid><pubDate>Thu, 14 Jan 2010 20:30:20 GMT</pubDate></item><item><title>clacke commented on My Java Experience</title><description>@Miguel
  
  
The secret is how high you set your expectations. :-D
</description><link>http://ayende.com/4365/my-java-experience#comment13</link><guid>http://ayende.com/4365/my-java-experience#comment13</guid><pubDate>Thu, 14 Jan 2010 19:30:14 GMT</pubDate></item><item><title>Alex Simkin commented on My Java Experience</title><description>This post is just a beautiful music to my ears.
</description><link>http://ayende.com/4365/my-java-experience#comment12</link><guid>http://ayende.com/4365/my-java-experience#comment12</guid><pubDate>Thu, 14 Jan 2010 19:00:48 GMT</pubDate></item><item><title>Omer Mor commented on My Java Experience</title><description>Oren,
  
can you please give some information about the course and the instructor?
  
</description><link>http://ayende.com/4365/my-java-experience#comment11</link><guid>http://ayende.com/4365/my-java-experience#comment11</guid><pubDate>Thu, 14 Jan 2010 16:04:45 GMT</pubDate></item><item><title>Miguel commented on My Java Experience</title><description>@Ayende
  
So the one thing about this post that blew me away was this, "Now that it is over, I can say that the course has met my expectations to a T".  What is your secret? How did you find a one week course that even came close to meeting your expectations?  I've been doing this for quite some time and I can honestly say that I haven't found or attended a one week course that even met half of my expectations.  I ended up just abandoning the whole concept of training courses.  
  
  
Please enlighten.
</description><link>http://ayende.com/4365/my-java-experience#comment10</link><guid>http://ayende.com/4365/my-java-experience#comment10</guid><pubDate>Thu, 14 Jan 2010 14:39:24 GMT</pubDate></item></channel></rss>