The Java Tree Withers

82 views
Skip to first unread message

Josh Berry

unread,
Jan 24, 2012, 3:14:51 PM1/24/12
to javaposse
Finally flipped through the latest issue of IEEE's Computer magazine
and I found the article "The Java Tree Withers." Abstract is simply
"The Java report card: infrastructure gets a D, code reuse gets
an F."

Was curious to hear thoughts from in here about the article. Right
now, you can find a pdf by just searching on the title. Apologies if
this has already been discussed. (Additional apologies for not being
able to just link to a page with the article...)

Dereck Haskins

unread,
Jan 24, 2012, 3:47:05 PM1/24/12
to java...@googlegroups.com
I just really 'lurk' here on this list.  But (assuming the article cited is not a joke on everyone) I'd have to agree with the title that reuse gets an F.  Out-of-the-box java has not gotten easier to re-use even with the emphasis on 'programming by contract' and the use of interfaces.  Indeed, in some ways it has gotten harder as language changes have been added.  Most new CS grads AFAICT _do_ have at least a passing familiarity with Java but nothing at all on code re-use beyond knowing that it is a 'good thing' at some some level.  Finally most books that teach intermediate or advanced java give little more than lip service to code re-use.  I think generics really were poorly done here, though I freely admit that I'm not sure that 'well done' generics would have made much of a difference.

My other 2cents on this: NIH and hero-based programming is _even worse_ in .NET world and if the F for re-use in Java is a 50 out of 100, in C# it would be much, much lower.  I'm using C# .NET every day at work and in the realm of  re-use (or even intelligent code planning and design patterns) the whole stack is pathetic.  Syntactic sugar in .NET is fantastic.  Down dirty "plan to use patterns and re-use" - man it sucks.  And MVPs are always pushing everyone to check out the latest capabilities of the Collections, but they don't usually fix the problems with the previous versions.  Just add more sugar (and slowing down the VM time to de-reference).

So the primary competitor to Java is not better on that front.

I think that as VM-based programming is becoming more and more extensive (with libraries built on libraries) we've moved far, far, FAR away from the idea of program design in the small.  The effect has been that code is less and less written to be re-used.  And I don't really see much talk of this at all (compared to the early days of Java in 97-98 when re-use and intelligent class design was part of every "you should use Java" discussion).

Again, my 3 cents and part rant.  In main we've (AFAICT) given up on code re-use.  Tooling makes it (perhaps) unnecessary to some people - what does it matter that I have 13 similar classes since organizing isn't all that hard in a nice tool.  We are a LONG way from looking at directories to browse the source.  Re-use is HIGHLIGHT, CNTRL-C, CNTRL-V.  Bah.


--
You received this message because you are subscribed to the Google Groups "The Java Posse" group.
To post to this group, send email to java...@googlegroups.com.
To unsubscribe from this group, send email to javaposse+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.


Moandji Ezana

unread,
Jan 24, 2012, 3:56:16 PM1/24/12
to java...@googlegroups.com
On Tue, Jan 24, 2012 at 10:47 PM, Dereck Haskins <dereck.m...@gmail.com> wrote:
I'd have to agree with the title that reuse gets an F

What exactly is the definition of "code reuse"?

In my definition, Maven Central, Github and build tools count as code reuse, and I think the grade is a lot higher than F.

I found the article extremely bizarre.

Moandji

Cédric Beust ♔

unread,
Jan 24, 2012, 4:36:06 PM1/24/12
to java...@googlegroups.com

On Tue, Jan 24, 2012 at 12:56 PM, Moandji Ezana <mwa...@gmail.com> wrote:
In my definition, Maven Central, Github and build tools count as code reuse, and I think the grade is a lot higher than F.

Thanks, Moandji, I was going to say just that: Maven is probably the finest example of code reuse taken to a point that's never been reached in the software industry before.

.net seems to be behind in these terms, but COM scores decently on that scale, albeit not as high as Maven.

Having said that, this is library reuse, which is important but not the only concept. It's important because it enables reuse of huge code bases. The other aspect, code reuse, is a more debatable aspect, although I think Java probably still scores pretty high compared to other languages in that area (COM is a better mechanism IMO).

-- 
Cédric

Alex Turner

unread,
Jan 24, 2012, 5:18:31 PM1/24/12
to java...@googlegroups.com
I couldn't agree more.  I think Java in my book has to get at least a B.  I think Maven et al have become so ubiquitous that they are almost taken for granted.  Just bring up a dependency tree for any major project, and that is all code reuse, at least after a fashion.  I also think this has enabled the quick success of other JVM languages like Groovy and Scala possible.  Because other JVM languages can pull in jars, it becomes possible to build new languages without having to rebuild all the plumbing with each language.  I think this is a major win for innovation too.

Alex R. M. Turner
Senior Software Engineer - Data Scientist

Fabrizio Giudici

unread,
Jan 24, 2012, 5:58:37 PM1/24/12
to java...@googlegroups.com, Alex Turner
On Tue, 24 Jan 2012 23:18:31 +0100, Alex Turner <alexrm...@gmail.com>
wrote:

> I couldn't agree more.

+1

And did you see in Table 3, "Framework fossils", the row "JVM on Mac:
Deprecated by Apple"? Also in the body: "The biggest threat to Java is
Apple’s banning of Java on the iPhone [ok] and the deprecation of the new
JVM on the Mac OS". !!!

And stuff such as "The chilling thought is that Oracle appears to have
created a monolithic multimedia replacement for JMF, QT4J, and FMJ".
JavaFX might include some media component, but it's completely wrong to
label it as a multimedia replacement for JMF.

But what were doing the reviewers when they were supposed to review that
paper?


PS I'm so glad I've just renewed my IEEE membership only with the annual
fee and I didn't renew my subscription to the Computer Society. Not sure
I'll renew the membership the next year: to keep in touch with technology
evolution in general a bunch of RSS feeds seem fine.

--
Fabrizio Giudici - Java Architect, Project Manager
Tidalwave s.a.s. - "We make Java work. Everywhere."
fabrizio...@tidalwave.it
http://tidalwave.it - http://fabriziogiudici.it

Josh Berry

unread,
Jan 24, 2012, 6:21:30 PM1/24/12
to java...@googlegroups.com
On Tue, Jan 24, 2012 at 4:36 PM, Cédric Beust ♔ <ced...@beust.com> wrote:
>
> On Tue, Jan 24, 2012 at 12:56 PM, Moandji Ezana <mwa...@gmail.com> wrote:
>>
>> In my definition, Maven Central, Github and build tools count as code
>> reuse, and I think the grade is a lot higher than F.
>
>
> Thanks, Moandji, I was going to say just that: Maven is probably the finest
> example of code reuse taken to a point that's never been reached in the
> software industry before.

I think there are some heavily rose colored glasses on this claim.
Many other software languages already had stuff like this. CPAN/CTAN
are two that come to mind easily. And this is avoiding stuff like the
ports tree in FreeBSD or packages in various linux stacks.

All of that said, I brought this article up because it did seem
somewhat flame baity. Was curious if it was just me. I am curious to
know what you are referring to with other code reuse.

Ricky Clarkson

unread,
Jan 24, 2012, 7:02:16 PM1/24/12
to java...@googlegroups.com
I think the problem is that ordinary code doesn't get that much reuse,
because it can be hard to use a particular class or module outside of
its original intended environment.

E.g., pretty much all the code written by or for my current client
depends on DB2 and on parts of a particular shared schema of tables,
and on their being updated by other parts of the system. There's a
lot of value in some parts (e.g., a job scheduling system in the style
of Control-M) that just isn't transferable even to other parts of the
client.

Fabrizio Giudici

unread,
Jan 24, 2012, 7:18:02 PM1/24/12
to java...@googlegroups.com, Ricky Clarkson
On Wed, 25 Jan 2012 01:02:16 +0100, Ricky Clarkson
<ricky.c...@gmail.com> wrote:

> I think the problem is that ordinary code doesn't get that much reuse,
> because it can be hard to use a particular class or module outside of
> its original intended environment.
>
> E.g., pretty much all the code written by or for my current client
> depends on DB2 and on parts of a particular shared schema of tables,
> and on their being updated by other parts of the system. There's a
> lot of value in some parts (e.g., a job scheduling system in the style
> of Control-M) that just isn't transferable even to other parts of the
> client.

I think nobody is questioning the point that *some* code can't be reused
(and, I add, that in some circumstances it is not worth while to spend
extra money to make it reusable).

But the previous examples referring to tons of popular Java libraries are
pretty clear to demonstrate that well designed libraries can be reused.
Given that we're basically talking of the Java ecosystem, which I think
most people acknowledge is one of the biggest in the world when compared
to other languages, I think that the conclusion that Java does pretty good
code reuse in comparison to other languages is evident.

Ricky Clarkson

unread,
Jan 24, 2012, 7:23:51 PM1/24/12
to Fabrizio Giudici, java...@googlegroups.com
My point might not have been very clear, so I'll say it differently.
Parts of Java applications are generally not very reusable. Sure, if
you're deliberately writing with reuse in mind you're likely to write
something reusable, but there's usually too much dependence on
surrounding code, sometimes a fear of adding classes that means that
utility code lives in the place that it's used as private methods, and
occasionally (as in my client) a dependency on a particular
environment such as a database.

All these can affect other languages too, but I'd wager that they
affect C and Haskell far less, for instance. Probably JavaScript too.

Cédric Beust ♔

unread,
Jan 24, 2012, 7:31:09 PM1/24/12
to java...@googlegroups.com, Fabrizio Giudici
On Tue, Jan 24, 2012 at 4:23 PM, Ricky Clarkson <ricky.c...@gmail.com> wrote:
My point might not have been very clear, so I'll say it differently.
Parts of Java applications are generally not very reusable.  Sure, if
you're deliberately writing with reuse in mind you're likely to write
something reusable, but there's usually too much dependence on
surrounding code

This, by the way, is where COM is very good: it lets you extract one or more interfaces out of your code that you deem usable by the rest of the world and it makes this service available at the binary level.

-- 
Cédric


clay

unread,
Jan 24, 2012, 8:03:23 PM1/24/12
to The Java Posse
This whole article is sensationalist and not thoughtful... APIs are
deprecated, JavaBeans aren't the answer to the world, so what? But
there is one point I wanted to elaborate on:

"The biggest threat to Java is Apple’s banning of Java on the iPhone"

This is exactly what I've been saying in the other thread:

The old strategy of every client device having a system-wide Java
runtime with the full manufacturer blessing is obsolete.

There is a huge opportunity for client-side Java to evolve and take a
position at the vanguard of the field: Evolve towards micro-JDKs
embedded into the end user application that are completely invisible
to the end user and are compatabile with iOS and other devices that
don't necessarily embrace Java at the system or manufacturer level.

What Java, the ecosystem, has that is of huge value is a rich,
vibrant, and widely multi-vendor ecosystem of development tools
including programming languages, IDEs, and best of breed build tools.
If that ecosystem can be connected to the wider range of clients and
client devices that don't want to understand or maintain a system
level JRE, that would be a huge win.

Josh Berry

unread,
Jan 24, 2012, 8:19:59 PM1/24/12
to java...@googlegroups.com
On Tue, Jan 24, 2012 at 7:18 PM, Fabrizio Giudici
<Fabrizio...@tidalwave.it> wrote:
> But the previous examples referring to tons of popular Java libraries are
> pretty clear to demonstrate that well designed libraries can be reused.
> Given that we're basically talking of the Java ecosystem, which I think most
> people acknowledge is one of the biggest in the world when compared to other
> languages, I think that the conclusion that Java does pretty good code reuse
> in comparison to other languages is evident.

To be fair, a lot of those libraries cited as examples are duplicates
of each other. I make no claims that this is a good or a bad thing,
but it was just recently when it was mentioned that Guava can replace
a lot of apache commons libraries. Libraries that, as far as I know,
do not actually have any bugs. They just haven't been updated in a
while. Even when items are not full on duplicates of each other, how
many libraries have a primitive hashtable to avoid boxing? (The jgit
author specifically mentions having written one.)

And this may have been the author's point. The core library has
favored deprecation to code reuse to a large extent. Hashtable versus
HashMap is an easy example. This is ignoring such new collections as
ArrayDeque. Then there is the increasing size of imports necessary
to use core collections. Static factory methods help a lot with this,
but were not used by core apis. (I'm specifically thinking about
collections here. Seems having Collections.list(a, b, c, d) would
have given an easy way to shield folks from even importing ArrayList,
but still getting it most of the time.)

As I said, overall article is still flame bait, far as I can tell.
Just not sure I understand some of the rebuttals as being actual
rebuttals. Just loud proclamations of dissent.

I should also add that I favor Knuth's view on code reuse as a whole.
So, still not sure I understand the code reuse arguments. Pro or con,
at this point.

Ricky Clarkson

unread,
Jan 24, 2012, 8:37:00 PM1/24/12
to java...@googlegroups.com
Regarding Collections.list(a, b, c, d), see Arrays.asList.

Josh Berry

unread,
Jan 24, 2012, 8:53:11 PM1/24/12
to java...@googlegroups.com
On Tue, Jan 24, 2012 at 8:37 PM, Ricky Clarkson
<ricky.c...@gmail.com> wrote:
> Regarding Collections.list(a, b, c, d), see Arrays.asList.

To do what I said, you'd have to use Lists.newArrayList.
Arrays.asList is a fixed size list, no?

Ricky Clarkson

unread,
Jan 24, 2012, 8:58:34 PM1/24/12
to java...@googlegroups.com
Nothing in your message suggested you wanted a list whose size you
could modify, but sure.

Josh Berry

unread,
Jan 24, 2012, 9:07:57 PM1/24/12
to java...@googlegroups.com
On Tue, Jan 24, 2012 at 8:58 PM, Ricky Clarkson
<ricky.c...@gmail.com> wrote:
> Nothing in your message suggested you wanted a list whose size you
> could modify, but sure.

My intent was that you could get something that implements all methods
of List without having to specify the concrete class. Apologies for
not making that clearer.

Vineet Sinha

unread,
Jan 24, 2012, 10:27:26 PM1/24/12
to java...@googlegroups.com
I read the article with the mindset that maybe I am biased and can't see that Java is dying. I was hoping for something that raises flags about things that we (the Java community should be thinking about). 

I found a couple of issues with the article. It is  in general pessimistic about a whole lot of things, but there is very little if any points made about problems with Java. The point that the article mentions is that Java is 'withering' is correct - which according to their points isn't that they are saying Java is dying. It makes the point the point that there is a lot of code that is getting deprecated and that old Java libraries has been replaced with new. This is great - I have to say that I am happy that this Java infrastructure is evolving even when it old. 

I noticed the editor seems to be a coworker of the author. Which explains the issues/quality the article. I think the only possibly interesting point that the article made was that there is a growing number of frameworks that are interlocking and increasing fragility. But, ofcourse Maven was not been discussed.

Beyond that there were some concerns with Java that were did come up and should perhaps be discussed here:

1) The concern that the article started with, is that really old code does not run anymore. I have experienced this. I would like to It will be great to read more on how big of an impact this is.

2) The other point was one of code reuse. This in my opinion is not a problem when it comes to using external libraries, but I have noticed that code reuse needs to happen more within large application. I am not sure what the answer here is - but perhaps we need better development practices to facilitate these (something akin to code reviews and/or design patterns).

Vineet
--
Founder, Architexa - www.architexa.com
Understand & Document Code In Seconds



Cédric Beust ♔

unread,
Jan 24, 2012, 10:33:16 PM1/24/12
to java...@googlegroups.com
On Tue, Jan 24, 2012 at 7:27 PM, Vineet Sinha <vin...@architexa.com> wrote:

1) The concern that the article started with, is that really old code does not run anymore. I have experienced this. I would like to It will be great to read more on how big of an impact this is.

I find this surprising. I certainly haven't seen it myself, but I also think that from a theoretical standpoint, Java's backward compatibility is pretty remarkable. Maybe not as remarkable as Windows', but very good nevertheless.

You can probably still run Java 1.0 source and bytecode without any modification, and there is a lot of Java code running today on versions of the JDK that have been sunset (JDK 1.4 still seem very popular).

Some specific examples, and how widespread they are, would be interesting.

-- 
Cédric


Vineet Sinha

unread,
Jan 24, 2012, 10:54:03 PM1/24/12
to java...@googlegroups.com


2012/1/24 Cédric Beust ♔ <ced...@beust.com>

On Tue, Jan 24, 2012 at 7:27 PM, Vineet Sinha <vin...@architexa.com> wrote:

1) The concern that the article started with, is that really old code does not run anymore. I have experienced this. I would like to It will be great to read more on how big of an impact this is.

I find this surprising. I certainly haven't seen it myself, but I also think that from a theoretical standpoint, Java's backward compatibility is pretty remarkable. Maybe not as remarkable as Windows', but very good nevertheless.

 I guess the problem is rare then. 

For us, we were overriding some of the swing classes, and the somewhere down the road more methods were added to the base class. Getting the code to compile was not too hard - but this was code that was last likely touched over 5 years ago and we did not have the expertise in house. So it just meant more time needed to be spent to resurrect the code.

-Vineet

Casper Bang

unread,
Jan 25, 2012, 12:31:39 AM1/25/12
to java...@googlegroups.com
For us, we were overriding some of the swing classes, and the somewhere down the road more methods were added to the base class. Getting the code to compile was not too hard - but this was code that was last likely touched over 5 years ago and we did not have the expertise in house. So it just meant more time needed to be spent to resurrect the code.

That's exactly the reason why the .NET authors decided against virtual-by-default like in Java.

Interesting subject though. I reckon all of us in here have written our own domain-less StringUtils, NumberUtils, DateUtils etc. which are obvious candidates for reuse. Especially since extension methods are now on its way into Java!

I realize Maven, NuGet etc. lets us easily pick down packages we know. But what about the whole discovery problem? How would we better benefit from each-others work?! 

Perhaps via metadata:

@Supplements(java.util.Date.class)
static class DateUtils{
    static Pair<Date, Date> getWeekSpan(Date date, Locale locale){
        ...
    } 
}

Whoops, now we need a Pair class... so I'd argue the problem is not how to reuse, the problem is how to easily find, and link, the stuff we can reuse.

Moandji Ezana

unread,
Jan 25, 2012, 3:24:34 AM1/25/12
to java...@googlegroups.com
On Wed, Jan 25, 2012 at 5:27 AM, Vineet Sinha <vin...@architexa.com> wrote:
It makes the point the point that there is a lot of code that is getting deprecated and that old Java libraries has been replaced with new.

It seems to me that the APIs he mentions - multimedia stuff - is an area in which Java has always done poorly. There are lots of other APIs (SQL, I/O, concurrency, not to mention Java EE) that continue to evolve rather than be replaced.

I found that the third sentence (the first substantive one, I think. I don't understand the very first sentence.) sets the tone for the article's WTF-ness: "In 15 years, my Java project has grown from 667 lines of code (LOC) to 633,436 LOC." Does this imply that he's worked on one (and only one) Java project for 15 years?

Moandji

Moandji Ezana

unread,
Jan 25, 2012, 3:29:29 AM1/25/12
to java...@googlegroups.com
On Wed, Jan 25, 2012 at 7:31 AM, Casper Bang <caspe...@gmail.com> wrote:
Interesting subject though. I reckon all of us in here have written our own domain-less StringUtils, NumberUtils, DateUtils etc. which are obvious candidates for reuse.

Then don't you get into the problems of distributing dependencies that only have one or two classes? While you could, say, split Commons Lang into 5 JARs, if everyone did that, classpath management would become even more difficult.
 

I realize Maven, NuGet etc. lets us easily pick down packages we know. But what about the whole discovery problem? How would we better benefit from each-others work?! 

A social network... for dependencies. I guess Github is approaching that. Do you really find discovery that difficult? What would be your ideal discovery scenario?

Moandji

Fabrizio Giudici

unread,
Jan 25, 2012, 4:39:38 AM1/25/12
to java...@googlegroups.com, Cédric Beust ♔
On Wed, 25 Jan 2012 01:31:09 +0100, Cédric Beust ♔ <ced...@beust.com>
wrote:


I still can't see the point. I think I need a small example to understand
where C/JavaScript (Ricky) and COM (Cédric) are better.

Fabrizio Giudici

unread,
Jan 25, 2012, 7:33:52 AM1/25/12
to java...@googlegroups.com, Moandji Ezana
On Wed, 25 Jan 2012 09:24:34 +0100, Moandji Ezana <mwa...@gmail.com> wrote:

> On Wed, Jan 25, 2012 at 5:27 AM, Vineet Sinha <vin...@architexa.com>
> wrote:
>
>> It makes the point the point that there is a lot of code that is getting
>> deprecated and that old Java libraries has been replaced with new.
>
>
> It seems to me that the APIs he mentions - multimedia stuff - is an area
> in
> which Java has always done poorly. There are lots of other APIs (SQL,
> I/O,
> concurrency, not to mention Java EE) that continue to evolve rather than
> be
> replaced.

Yes, I know the pain of media libraries. But it's a situation that doesn't
extend to the rest of the world.

Re: the Guice libraries that replaced Apache Commons... what's the point?
Redundancy in open source is a known problem, basically you don't want the
extremes: too many similar stuff -> NIH syndrome, while just a single way
to do one thing -> lack of flexibility. Apart from rare exceptions, I see
a health distribution of stuff in the Java ecosystem. In any case, it
seems that this can't have to do with the original paper. This is mostly
community related, and 1) it doesn't have to do with Java itself, rather
third parties and 2) how things are supposed to be better in other
communities?

>
> I found that the third sentence (the first substantive one, I think. I
> don't understand the very first sentence.) sets the tone for the
> article's
> WTF-ness: "In 15 years, my Java project has grown from 667 lines of
> code (LOC) to 633,436 LOC." Does this imply that he's worked on one (and
> only one) Java project for 15 years?

Yesterday I mentioned other WTF-nesses. If you go on with the same topic,
there's a fun way of compute the cost due to a library change. In any case
if you google the author's name you'll find his page and a list of
projects.

Eric Jablow

unread,
Jan 25, 2012, 4:07:50 PM1/25/12
to The Java Posse


On Jan 25, 7:33 am, "Fabrizio Giudici" <Fabrizio.Giud...@tidalwave.it>
wrote:

> Re: the Guice libraries that replaced Apache Commons... what's the point?
> Redundancy in open source is a known problem, basically you don't want the
> extremes: too many similar stuff -> NIH syndrome, while just a single way
> to do one thing -> lack of flexibility. Apart from rare exceptions, I see
> a health distribution of stuff in the Java ecosystem. In any case, it
> seems that this can't have to do with the original paper. This is mostly
> community related, and 1) it doesn't have to do with Java itself, rather
> third parties and 2) how things are supposed to be better in other
> communities?

For Apache Commons-Lang and Commons-Collections, the problem was
that its contributors never released Java Generics versions. With
Java 6,
Guava functional programming was a strict improvement over Apache.

However, most of the reusable libraries I've seen are either 'making
Java simpler' , or 'making Java more functional', or 'fixing Date', or
the rare math library. The tasks we all have done many times do
not get into libraries. Okay--I'm not sure we'd ever have a standard
PurchaseOrder class. What about Address? Is there any hope for
a standard version? Note that internationalization is crucial. Each
country has its own address attributes. Postal codes differ; I cringe
whenever I see 'zipCode' in a Java class intended for general use,
and worse whenever I see it validated by the regex \d{5}(-\d[4})?.

Should the community try to develop classes for common notions?

> Fabrizio Giudici - Java Architect, Project Manager
> Tidalwave s.a.s. - "We make Java work. Everywhere."
> fabrizio.giud...@tidalwave.ithttp://tidalwave.it-http://fabriziogiudici.it

Respectfully,
Eric Jablow

Rakesh

unread,
Jan 25, 2012, 4:20:04 PM1/25/12
to java...@googlegroups.com
I've come to the conclusion that chasing reuse is a fools errand in
typical projects. The bigger enemy is duplication.

I see a lot of copy/paste programming that is not cleaned up by
removing the resultant duplication, especially in legacy apps where
(a) members of the team do copy/paste because its easy to do without
having to understand the full code base, and
(b) devs are not given extra time to refactor the code to remove the
duplication.

This leads to code rot and eventually team rot as the application
grows massively in size and grows unwieldy.

I've seen applications sold to different potential customers as
perfect for their needs as it all 'reusable'. However, 9 times out of
10, because the new customer has 'slightly' different requirements, it
could not be reused and instead huge swathes of the existing code base
is copy/pasted and changed.

To add insult to injury, the original estimates are based on this
phantom reusability, and when it turns out not to be reusable, the
devs are instead pressurised into working longer hours to try and
realise those original estimates.

Rakesh

Moandji Ezana

unread,
Jan 25, 2012, 4:27:34 PM1/25/12
to java...@googlegroups.com
On Wed, Jan 25, 2012 at 11:07 PM, Eric Jablow <erja...@gmail.com> wrote:
Should the community try to develop classes for common notions?

Examples that come to mind are Joda-Money or URL, email and credit card validation in Hibernate Validator. Something similar could probably be done (or maybe has been done) for measurements and other standardised, objective things.

I don't see it happening for addresses because it's so complex to do generically and so simple to do in a domain-specific way.

Moandji

Vineet Sinha

unread,
Jan 25, 2012, 7:21:24 PM1/25/12
to java...@googlegroups.com
Discovery does not seem difficult (to me), but I always keep questioning if I am missing something vs how robust a framework/library is. 

I guess it would be great to see 'social network' for all the libraries that we are using. Perhaps something that looked similar to http://java-source.net/ but showed usage of a project based on maven dependencies.

Another site that has been trying  to do this for longer (with arguably less success) is http://www.ohloh.net/

Vineet Sinha

unread,
Jan 25, 2012, 7:32:38 PM1/25/12
to java...@googlegroups.com
On Wed, Jan 25, 2012 at 4:20 PM, Rakesh <rakesh.m...@gmail.com> wrote:
I've come to the conclusion that chasing reuse is a fools errand in
typical projects. The bigger enemy is duplication. ... 

...(b) devs are not given extra time to refactor the code to remove the
duplication.

Perhaps we need to have a simple 'technical debt' calculator that we get into everyone's hands. And maybe some simple calculations and rules of thumbs so that management keeps time aside to cut down such waste of effort.

- Vineet

Andreas Scheinert

unread,
Jan 25, 2012, 4:50:44 PM1/25/12
to The Java Posse
Hi Rakesh,

excellent point on reuse. How do your customer measure reuse?

regards andreas

On 25 Jan., 22:20, Rakesh <rakesh.mailgro...@gmail.com> wrote:
> I've come to the conclusion that chasing reuse is a fools errand in
> typical projects. The bigger enemy is duplication.
>
> I see a lot of copy/paste programming that is not cleaned up by
> removing the resultant duplication, especially in legacy apps where
> (a) members of the team do copy/paste because its easy to do without
> having to understand the full code base, and
> (b) devs are not given extra time to refactor the code to remove the
> duplication.
>
> This leads to code rot and eventually team rot as the application
> grows massively in size and grows unwieldy.
>
> I've seen applications sold to different potential customers as
> perfect for their needs as it all 'reusable'. However, 9 times out of
> 10, because the new customer has 'slightly' different requirements, it
> could not be reused and instead huge swathes of the existing code base
> is copy/pasted and changed.
>
> To add insult to injury, the original estimates are based on this
> phantom reusability, and when it turns out not to be reusable, the
> devs are instead pressurised into working longer hours to try and
> realise those original estimates.
>
> Rakesh
>
Reply all
Reply to author
Forward
0 new messages