[ajug-members] Clojure-Conj and the State of Java

Igor Tovstopyat-Nelip igor.tn at gmail.com
Fri Nov 18 13:44:40 EST 2011


At last we are having a meaningful discussion here. I have not experienced
yet much of revelation but it's interesting to learn about opinions of this
industry heavy hitters.

On Barry's point of a good paycheck. As I know, serious consulting outfits
such as Relevance and ThoughtWorks are very much interested in Clojure and
putting that into their toolbox. Also, I know of people who are paid very
well doing Clojure. Of course, those are not average developers, but
sometimes you want to deal with the best.

Anyway, back to the original question that started this thread - Did
anybody go to Clojure Conj last week?

- Igor

On Fri, Nov 18, 2011 at 10:51 AM, Summers Pittman ℝ <secondsun at gmail.com>wrote:

> Wow that's a lot of words but you bring up several good points and i will
> try to tease some of them apart.
> *
> *
> *Preface and my opinions*
>
> Java the language is like an old pair of shoes.  It is ugly and out of
> fashion, but it gets the job done and a new set of insoles helps push it
> along for a few more months.  The ecosystem is mature, the developers are
> nice and intelligent, the technology is pervasive and not particularly
> restrictive.  Also it is free as in beer.
>
> If you think that people outside of enterprise don't use Java I need to
> introduce you to my friend Android.  Millions of Java (the language)
> applications are downloaded and installed every day on that platform.
>
> On the server I am a fan of Hibernate, Maven, Groovy, and Spring.  Recent
> advances from the official Snoracle EE project have removed much of the XML
> hell and replaced it with conventions and annotations.  This is a good
> thing.
>
>
> I *LIKE* Java the language, but I don't love it.
>
>
> *Java the language*
>
> Java the language is nearly 20 years old and lacks many things which have
> been developed since.  While it is rather OO, it still has primitives which
> may or may not be a good thing depending on who you ask.  Many tools have
> been written to give Java the ecosystem some of these newer features such
> as dynamic typing, first class functions, etc but the language is sitting
> in rather static roots.
>
> The side effect of a stable, static language is Java has very very VERY
> good tools.  Java also has very good FREE tools as well.  While it is more
> code to write, it is easier to maintain code.  It does need first class
> functions, collection literals, pure (drop arrays and primitives) OO,
> better generics (type erasure? BLEH), and dozens of other things.
>
> *Java the Desktop Ecosystem*
>
> IDE's and Minecraft and not a whole lot else.  I did a quick Google search
> this morning and didn't find much.  Worse, Chrome and Firefox have moved to
> make using Java Applets much more difficult.  Snoracle is updating JavaFX
> and providing new features to create compelling rich clients, but its dead
> Jim.
>
> *Java the Client Ecosystem*
>
> We have Android tablets, phones, and televisions.  There is Blue ray and
> Java ME.  Oracle promises they have a mobile strategy which isn't sueing
> Android but they've been good at keeping it off my reader feed.
>
> *Java the Enterprise Ecosystem*
>
> There is a tool for every need and we suffer from a bit of paradox of
> choice right now.  At one end we have JSP's and Servlets.  They get the job
> done, don't fuss too much, but rely on the developer to do much of the
> heavy lifting.  On the other end we have J2EE which is everything everyone
> hates about Java.  In the middle we have Java EE6, the Spring magic bag of
> crap, and dozens of toys and small bespoke projects which may or may not be
> helpful.
>
> Where I think Java really, really shines is Maven + Continuous
> Integration.  Because the language is so damn dumb, iteli-sense and static
> analysis is very very good.  In a few clicks of a mouse (or mouse analog) I
> can have a Hudson server downloading my application, building it, testing
> it and deploying it from SVN.  I don't have to configure a build AT ALL any
> more.  Also I don't have to worry about managing packages myself either.  I
> tell the pom to use a new version, commit, and wait for a green bar.  Is
> Maven's learning curve steeper than javac and bash scripts?  Yes.  Is it
> worth it? Yes.
>
> *Languages on the VM*
>
> If you are writing your beans in Java stop right now and start writing
> them in Groovy.  Many people say write your tests in Groovy first but they
> are wrong.  I havn't used any other languages on a project which is in
> production, but Groovy saves a lot of time (especially when paired with JPA
> annotations, schema generating tools, Maven, etc).
>
> After you write your beans, write some tests using Groovy.  Start by
> writing your setup code in Groovy but write your actual tests in Java.  The
> reason I suggest this is, if you are doing pure TDD, you want to be able to
> lean on your IDE to generate the methods you need on the classes your are
> testing.
>
> Now you should be comfortable enough with the language to use it where
> ever.
>
> *Ceremony and XML Hell*
>
> I blame Ant.  Ant was what made developers think reams of eye bleedingly
> dense xml was ok to write.  Only now we are getting away from that.  Spring
> and Maven have done a good job of making convention and implicit design
> more accessible than configuration and explicit design.  Learn the
> annotations, learn the conventions, and love them.  Green field development
> will benefit from the added agility, and @Autowired is a godsend for
> maintenance project.
>
> *Conclusions*
>
> Java has become a very tight straight jacket.  For working on large teams
> (10+ developers) it is comfortable and familiar.  It is has a strong set of
> tools and conventions which make writing and maintaining code easier if we
> follow all the rules.  They are baroque and suck some of the time, but it
> lets things scale much more quickly with newer or less senior developers.
> For those of us alone or on small teams the jacket chafes and chokes.
>  Alternative JVM languages like Groovy and Scala bring the experience and
> libraries from Java to much more casual, independent, and agile teams.
>  Project like Jruby and Jython bring different experiences and developers
> into the Java world so we can share ideas about how things can and should
> be done.
>
>
> *
> *Summers Pittman
> >>Phone:912 293 2314
> >>Java is my crack.
>
>
>
>
>
> On Fri, Nov 18, 2011 at 10:06 AM, <acidbriggs at gmail.com> wrote:
>
>> Did anyone go to Clojure-Conj last week?  I did.  Any thoughts?  I think
>> I am falling in love.
>>
>> In general, I have come to loathe Java, the language. Its endless
>> ceremony (if anyone has really implemented good design patterns or have
>> written a large swing application you know what I mean), code generators,
>> XML configurations, cross-cutting concerns, dependency hell, time consuming
>> rebuilds and redeploys, mutability by default semantics and lack of
>> features: first class functions, type inference, regular expression
>> literals, multiline string support (it goes on) that just about every
>> freakin' language has now. I am not very excited about Oracle being the
>> keeper of the code either. It won't be long until your JVM sucks unless you
>> pay for the 'premium' one.
>>
>> Now, you may think I am just ranting, but I am really curious to know
>> what your perceived state of Java as a tool in general is.
>>
>> Do people only learn Java so they can get paid? I mean, why would anyone
>> want to start off with it? Or, why would anyone want to continue using it
>> with all the other choices there are. I know the JVM can be a big selling
>> point (and I believe that is the real technology, not the language) but you
>> can run many languages on it. So, why are you (if you are) avoiding Ruby,
>> Scala, Python, Clojure (screw Groovy, IMHO). If it really is all about
>> getting work done and time-to-deliver, hasn't anyone realized how much
>> extra time and effort go into developing good Java applications? I see that
>> a majority of people employed as Java developers are just doing the
>> enterprise, web application, transaction script (Fowler) applications which
>> have more XML and boilerplate (ceremony) code in them than actual business
>> rules just keep on chugging along with Java. We rely on code generators,
>> Aspect-J, annotations and a bunch of other things just to do the simplest
>> task of getting data to a screen. A web application I had written in Java
>> back in 2001 would most likely be 10x the size and require 10x the RAM due
>> to all the dependencies needed now, for what purpose? We now have tens of
>> classes being written, generated, injected and intercepted to do the same
>> thing we've always done in less code and time. Does anyone remember when
>> stack traces weren't so ridiculously long?
>>
>> Isn't anyone else frustrated? Or have we, as developers who use Java, not
>> been paying attention to what the rest of the world (that world outside
>> your enterprise) is doing?
>>
>> I'd like to hear about people who are using the JVM with other languages.
>> How many of you are polyglots in your profession?
>>
>> --briggs
>> _______________________________________________
>> ajug-members mailing list
>> ajug-members at ajug.org
>> http://www.ajug.org/mailman/listinfo/ajug-members
>>
>
>
> _______________________________________________
> ajug-members mailing list
> ajug-members at ajug.org
> http://www.ajug.org/mailman/listinfo/ajug-members
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ajug.org/pipermail/ajug-members/attachments/20111118/3c8f1f42/attachment-0001.html 


More information about the ajug-members mailing list