26 ms·
Everything that's wrong with Java in a single class
- engtech 14y agothe source page that the google+ is commenting on was on HN a while back, but didn't get many comments http://news.ycombinator.com/item?id=2807908 http://news.ycombinator.com/item?id=2807908
- sutro 14y agoI'm kind of partial to com.sun.java.swing.plaf.nimbus.InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState. A "non-haiku" has been written in its honor: http://stackoverflow.com/a/891589 http://stackoverflow.com/a/891589
- mahmoudimus 14y agoHahah, I love this. Very clever!
- brown9-2 14y agoI'm not sure how one framework developer's naming choice (a framework which by the way, needs to do some pretty meta things in regards to creating factories for other factories, and which is using the term "singleton" to mean something different than usual) is a criticism of an entire language. You can come up with ugly names for classes in any language.
- columbo 14y agoI think it speaks more to the community than the language (and arguably there is also no such thing as a community). After years of consulting I can't remember how many times I've walked into an Enterprise Java Shop(TM) to find TemporalSystemLoadOrganizers, IntransitPredeterminedApplicationUtilitySources, MetaphysicalManipulatitiveQuantityDisorderRecognizers only to find out that at the end of the day these abstract-factory-driven-decorated-decoupled-dynamically-injected-frameworks tend to do such obscure/complicated things as "Update a user's first name" or "Show the last item the user has purchased"... Again, not Java's fault and no question you can write very fast, beautiful and clear code in Java. I'm sure every language has specific warts and most of them probably reside more with the community than the syntax.
- bane 14y agoRight, it's not the fact that you can name things poorly in any language, it's that non-descriptive, overly verbose word-jumble vomit is built and presented seriously and without irony as common practice.
- taf2 14y agoEither it's the people who write Java, or something intrinsic in the design of the language itself that drives people to write code in this extremely verbose way. I've always leaned towards the latter...
- patio11 14y agoA bit of column A and a bit of column B. People who write Java are exposed to rampant overuse of design patterns when looking at examples of a) what the community considers Good Java and b) all over their internal projects. This is partially because Java lives, by design, in a Kingdom of Nouns and partially because there's just no good way in the standard language / library / toolchain to do some things without going really pattern heavy. For example, assume I've got a list of students, and I want to show all the ones who haven't taken at least one exam, sorted by last name. Here's the relevant pseudocode in Rails: class.students.select {|student| student.tests.inject(false) {|acc, test| acc || (!test.taken? )}}.sort {|a,b| a.last_name <=> b.last_name} That just flows from my keyboard as a Ruby/Rails programmer, is pretty much instantly comprehensible to other Rails programmers, and (while others might disagree with stylistic choices, variable names, or whether to use that weird &syntax to do the sort) would be considered "good enough Rails code to ship." I will take the liberty of pasting my Java implementation into a gist -to avoid breaking HN: https://gist.github.com/3760402 https://gist.github.com/3760402 A nice, svelte 38 line method, which will be reused via copy/paste a hundred places in my codebase. Incidentally, at my previous Big Freaking Enterprise job, the user need "Make a page for a class where we can see all students who haven't..." would get quoted to them as "No problem, that will cost you $1,000. Are we green-lit to implement or do you want docs written first ($250)?", because the core logic I've shown you is the tip of the iceberg of how sucky that experience is going to be. We haven't even started with the XML files and annotations required to hook the new actions together yet. By comparison, as a Rails developer, in lieu of getting you to sign off on a $1,000 line-item to your next invoice I'm inclined to show you a totally working page and ask you "Is this what you wanted?" because implementing it is easier than talking about implementing it.
- meritt 14y agoThis isn't a verbose naming convention. The name is actually quite succinct in describing what this encompasses. And that's precisely the issue.
- brown9-2 14y agoBut let's be clear - this class isn't a part of the core library that developers would use everyday. It's a part of a third-party open-source library that implements a "dependency injection container". It's a pretty abstract concept to begin with - of course it's going to need to do high-level, head-in-the-clouds-type stuff that on first glance you think you would never need.
- romaniv 14y agoIt's not about naming. This class actually does what its name says. That's the best part. The methods and their JavaDoc descriptions are pretty hilarious as well. And it's not about the language per se. (You can write clean, simple code in Java, but you would have to write it pretty much from scratch.) It's about Java culture, which encourages this kind of stuff. And yes, I had been a Java programmer for many years. I used to like the language at some point. But several integration projects made me like its culture less and less.
- astral303 14y agoIt's the remnants of the late 90's early 2000's software development overengineering disease, so aptly captured in the mess that was J2EE. Similar to "nobody got fired for buying IBM", the mindset was that "nobody got fired for building layers of abstraction just in case." It's the culmination of the second system effect.[1] Without a pervasive unit testing culture, the big enterprise answer to "what if" is "let's add a point of flexibility here." Obviously, people should be held responsible for building unnecessary abstraction layers like that. They waste time and are often wrongly abstracted, so when you do need to go in to refactor, you end up having to fight the pre-existing "what if" abstraction. [1] http://c2.com/cgi/wiki?SecondSystemEffect http://c2.com/cgi/wiki?SecondSystemEffect
- chris_wot 14y agoThat argument works well for application code, not so well for frameworks as you can never be 100% sure how it will be used.
- matt2000 14y agoThis is pretty funny, and yes Spring itself is pure insanity, but it's not really fair to equate Java the language with Spring the framework.
- aut0mat0n1c 14y agoHello and welcome to 2008! Seriously though, if you are going to rehash this tired schtick then at least make intelligent points about the problems with the language. I have been writing Java for over a decade and I can tell you are a number.
- hmottestad 14y agoNo need to create javadoc, takes people 4 years to read it anyway :D
- sukuriant 14y agoHey now. I find Javadocs to be among the easiest to read formats of all the different documentation styles. Right up there with Python's standard one (or whatever tool python's default library as well as numpy and scipy use), maybe even better.
- hmottestad 14y agoActually, I do like reading javadoc. It's just a pain to create and the code feels a bit bloated with all those comments.
- chimeracoder 14y agoPython's is far superior to Javadocs. JavaDocs is one of the earliest (popular) standard tools for documentation, so I'll give it that, but it suffers a number of problems - problems which are partly relics of the Java language, but that's no excuse. JavaDocs is too focused on documenting classes, rather than documenting functionality (Python docs, by contrast, focus on modules, which are themselves arbitrary chunks of code with connected functionality). JavaDocs doesn't make the package/class hierarchy terribly clear - this is intrinsically tied to Java's overcomplicated class hierarchy and needlessly complicated package system, but it carries over into poor documentation as well. JavaDocs also doesn't have a culture of providing complete examples of code, which exacerbates the two aforementioned problems. That said, JavaDocs has inspired other good tools, so I'll give it some credit for that and write these criticisms off as vestiges from a time long past.
- jefflinwood 14y agoIf anything, that's an indictment of the Spring framework, which you certainly don't need to write Java. For instance, there are over 500,000 Java apps in Google Play market, and I'm pretty confident most of them don't use Spring. Now if you wanted to criticize Spring and cargo-cult enterprise Java development, I think that's reasonable.
- jebblue 14y agoGood observation, I've read several posts which complain about factories and proxies. With Grails (which can be all Java no Groovy if you want), Zk, GWT, etc. I can do powerful web apps. No EJB and no Spring needed.
- absconditus 14y ago"Powered by Spring, Grails outperforms the competition." So I guess that there is some Spring.
- jebblue 14y agoYes but I don't recall having to do anything directly with it so the reference is good for me. If I need logging I expect it to work not worry that some bean config file isn't set up right. If the Grails developers found Spring helped them, cool, as long as I don't have to deal with it.
- programminggeek 14y agoThe thing is, it's not Java's fault. You can write good Java code. It can be small, and easy, and nice. The problem is the word Enterprise and the abusive abstractions that seem to come along for the ride. Also, many of the abstractions start as good ideas, but they soon become a hammer and everything else becomes an AbstractNailFactoryInterfaceManagerProxy.
- deleted 14y ago[deleted]
- spacemanaki 14y agoAs others have pointed out, this really should be titled "Everything that's wrong with Java culture ..." For a more technically critical look at Java the language, I recently stumbled on this video while watching a Scala talk Martin Odersky recommended in the first few sessions of his new Coursera class... http://www.youtube.com/watch?v=hcY8cYfAEwU http://www.youtube.com/watch?v=hcY8cYfAEwU It's pretty meaty, although it looks only at Java 1.0. Many of the criticisms aren't things I would have necessarily thought of first, and it gave me something to think about in terms of what my own priorities are. (For instance, the lack of first-class functions and closures gets no mention at all)
- ww520 14y agoWhat is the Java culture? I don't think there's anything. There are so many Java programmers that there are bound to be bad ones along with the good ones.
- spacemanaki 14y agoYou're right, of course. Programming culture can be hard to nail down, if such a thing even exists. But would it be a stretch to argue that there is a Java community? I don't think so, and I don't think it's much more of a stretch to argue that a community will adopt trappings of culture. Java the language certainly enforces a certain kind of programming, that Steve Yegge so succinctly identified as a "kingdom of nouns". I'm not sure if that constitutes a culture or not but it does strongly influence the kinds of programs you end up writing in Java. I've experienced some shared technical culture between companies I've worked at that used Java heavily, but of course my experience is just anecdotal. Here's a blogpost from an HNer that argues there is such a thing as "Java shop politics" and that companies that develop certain kinds of large monolithic software written in Java and C++ tend to share something, which is not desirable. I don't really have enough experience to agree or disagree, but it's an interesting read: http://michaelochurch.wordpress.com/2012/04/13/java-shop-politics/ http://michaelochurch.wordpress.com/2012/04/13/java-shop-pol...
- ww520 14y ago
- djhworld 14y agoYou'll find this all the time in enterprise software, but not elsewhere from my experience. This is a result of people reading their design patterns book and thinking they've mastered the world, but in reality it's just papering over the cracks of the deficiencies of Java. I suspect once Java 8 comes out stuff like this will slowly disappear from the radar.
- jmgao 14y agoThe carryovers from C, and resulting insane behavior when mixed with Java's usual syntax are pretty hilarious, too. public int[] what()[] { return new int[0][0]; }
- jebblue 14y agoI've been coding in Java since it came out in 1995 and I never did that, didn't know you could or why you would want to. So what's your point? Java, C, C++, even C# are readable by average people like me. LISP, Haskell, Ruby, Scala, Smalltalk all look like they were written by aliens. If you really want to see something funny look at JavaScript code which combines integers and strings. Things that Java would complain about immediately, JavaScript tries to actually run with unpredictable results.
- jeremiep 14y agoThats a gross comparison of languages. Java, C++ and whatnot are imperative languages, of course the syntax is gonna be different to declarative languages such as Haskell or Lisp. They're also only alien at first; once you get used to a declarative syntax you never want to write imperative code again. It would be like going back to monochrome after experiencing color monitors. We have some programmers at work who can't think outside the C++/Java/C# box. They also tend to be the worst programmers even after decades of experience.
- virmundi 14y agoPerhaps this isn't quiet HN quality of a comment, but I'd love to go to a grey scale screen. I've been trying to figure out how to do that for years. Never could. The simplicity of it would be wonderful. In the same way, Java is noisy, I admit that, but it's fast, powerful and fairly easy to understand when executed correctly. I'm not saying you can do the same thing in other languages, but it's a good language for systems, especially middle-ware/server side development. It's horrible for Web Page development since JSPs suck and custom tags never caught on in most development shops (they're used because the framework provided them, but even when .tag files came out few used them to encapsulate screen behavior). But Web Development has moved on to JS on the client and REST on the back, so again Java is pretty good too.
- benjaminwootton 14y agoAnd this is positively lightweight compared to J2EE which Spring superseded.
- jrabone 14y agoTake a look at J2EE 6 - you might find it's Spring which is the heavyweight these days. Although as of 3.1 at least the need to write your programs in XML is going away...
- vetler 14y agoI'd argue that the right time to start writing Java EE applications is right now. With Java EE 6, JBoss AS 7 and frameworks such as Arquillian, Java EE is a pleasure to work with.
- ww520 14y agoThis has nothing to do with Java. It has the do with that particular project.
- cletus 14y agoI hate this kind of post. It's the tech equivalent of "You're a stupidhead". If you want to criticize Java then at least make some meaningful points. Just off the top of my head: - Java logging is a clusterfuck - Something as simple as wanting symbolic links in a Maven build requires a third party plugin, last updated in 2007 (maven-junction-plugin) that requires something no longer in the central repo; - No lambdas yet; - Type erasure in generics and the consequences thereof (eg inability to create generics of primitive types unlike C#); - Checked exceptions; - No function references, lambdas, etc (still a year+ away); - Eclipse is a hot mess (IMHO). And, no, for Java at least, vim/emacs simply are no better. IntelliJ is but for some reason they insist on making it hard to make plugins as their API changes every major version. Jetbrains seems to be going out of their way to make it hard; And as far as Spring goes, it's probably long in the tooth now but people either forget or never knew just how influential Spring was in the early 2000s. Java at that time really was a hotbed for innovation (believe it or not). It may not have invented DI/IoC but it certainly popularized it. But long class names? Really? Is that all you've got? Who cares? EDIT: I don't care about the description either. If anything, it's probably poor text from someone who isn't a native English speaker. As for the layering, it's nit-picking. I had a quick look and found only one use for this: CacheProxyFactoryBean. Perhaps there was more at some point? Who knows? But the subclass seems to be used in the Spring AOP stuff. The thing that really bothers me about this is the tone. It's a bit like how among a certain set it's popular to deride PHP. In my experience, people who bother to do that (or simply enjoy it when others do) are nearly always closedminded dogmatic fools.
- famousactress 14y agoIn his defense, I don't think the long class name is the problem he's pointing out.. it's the over-patterned, over-generalized nature of something that barely does anything. The class's description is "Convenient proxy factory bean superclass for proxy factory beans that create only singletons." Seriously? That's fucking hilarious.
- haberman 14y agoMy favorite part is that the first word is "convenient." At the point that you need this class, absolutely nothing about the situation could possibly be considered "convenient."
- dustingetz 14y ago> "it's not java's fault" (from multiple comments) languages have opinions. Java is designed around the principle of "everything should be a class" which makes everyone's first instinct to have lots of mutable instances with lots of mutable member variables. Turns out this leads to shitty code in the large. Compare to Clojure, which supports mostly all the same features as Java, but emphasizes them differently. You can use mutable data, but by default everything is immutable. You can have methods and instances, but its easier to just use a function. Java can do higher order functions and closures, but they're so verbose that its better to choose imperative for/while loops over map/reduce/filter, which don't even come in the standard library. Clojure is designed to make higher order functions and expression-oriented thinking idiomatic, java makes this so difficult as to be not worth pursuing even with a team who already understands how to think this way. Java's design leads people towards code that you're afraid to touch for fear of disturbing state somewhere else which causes failures unrelated to your change. That's why when you need to fix a bug, in Java, people will expose a hook here and there to make a minimum change that they are sure doesn't break code somewhere else. A decade of changes designed to expose little hooks to not break existing code, you end up with a AbstractSingletonProxyFactoryBean with intercepters and proxies and loaders. Nobody is claiming that AbstractSingletonProxyFactoryBean is an abstraction. It came into existence over time because it was the easiest way to fix bugs and adapt to changing requirements while not breaking existing code. It's definitely java's fault, and all the best language designers know it. PS Here's a paper that describes a team who migrated a bunch of excel macros to Java, found that they had built an unmaintainable mess, then took the same team and built it in OCaml, and have been using OCaml ever since. http://queue.acm.org/detail.cfm?id=2038036 http://queue.acm.org/detail.cfm?id=2038036 - OCaml for the masses, Yaron Minsky, Jane Street
- deleted 14y ago[deleted]
- mangler 14y agoClojure functions are Java classes. It's not much different from using a Java functional libs. Except that Java will probably be faster as Clojure still doesn't do primitives and stuff (not sure about that one, may be it already does) You can do all the functional stuff in Java, Clojure is doing exactly that. It will be more verbose, but once you learn the ropes it just looks different, it is not different.
- xrt 14y agoI genuinely thought this was put together as a rather good joke until I studied it a bit. Is the object managed by this factory a singleton?
- mulya 14y agoObjective-C looks the same to me. sorry. Rails source code also has it's pasta places. So what?
- lucian303 14y agoWell you forgot the JVM. Can't put that in a class, other than a class of its own. Ugh.
- spacemanaki 14y agoThe JVM is usually heralded as one of the good things about Java. What's wrong with it?
- Tichy 14y agoMy favorite joke in that vein is "I had a problem and thought to use Java - now I have a ProblemFactory"
- dguaraglia 14y agoMore likely just one implementation of IProblemFactory.
- jebblue 14y agoIf I wrote that it would have been downvoted to - points range by now.
- dguaraglia 14y agoI'm a swell guy, that's why I don't get as much hate (?)
- jebblue 14y agoMy comment was about the content or lack thereof of your comment. It wasn't personal. So do down votes indicate people hate people on Hacker News? I don't hate anyone. Is it an attempt at humor to suggest I'm hated? If anyone hates I feel sorry for them, I hate no one.
- chris_wot 14y agoGiven that's a .NET naming convention and not what is encouraged by Oracle, I think that unlikely.
- islon 14y agoMy opinion goes like this: java is a verbose and hard-to-change language compared to ruby/python/js/etc so people think "I'm going to create this extra layer/abstraction just in case someone needs to change/use it for something else later" while dynamic language guys just solve the problem at hand and then improve it later because it's painless to do so.
- snorkel 14y agoAgree. Java coders seem to have a habit of over-solving the problem with useless layers of abstraction. I recall trying to create a silly video editor in Java, using a common vendor framework for media files, simply opening the file then extracting the Nth frame involved instantiating 12 layers of classes, like nested Russian dolls, every layer just as useless as it's parent class. What a waste of time it was to consider Java.
- zxcdw 14y agoIt's more a problem relating to the fact that many projects and their code bases are designed and planned to last for over a decade if not two or more. One simply can't just make drastic changes back and forth, because literally, peoples lives are on the line(let alone how much financial capital is invested...) with lots of written code. I'd grab Java, C++, heck, even C over Python or Ruby, let alone god damn JavaScript for a project which is going to ship after approximated 5 years of development and which has planned maintenance for at least 10 years afterwards. Considering how we miss deadlines, I'd assume such a project would be maintained after 20 or 25 years. Yes, someone would still work with the code base in 2037. Imagine that, and that's not even an unrealistic stretch. Welcome to enterprise software development! Do that with Python, Ruby or JavaScript and I'll give you a cake or two.
- runn1ng 14y agoCan somebody smart please come and explain what this class actually does?
- dotborg 14y agoIt just works .. and thats WRONG!
- virmundi 14y agoAs one of the commentors pointed out in the original post, that class is helpful for making AOP driven applications. You could also use it in a DSL system if you wanted. Basically with Spring there are a lot of classes, the majority of which you will never use and should probably never use. But if you have the need, you've got a lot of power.
- chris_wot 14y agoTry this comment: http://news.ycombinator.com/item?id=4553341 http://news.ycombinator.com/item?id=4553341
- littlemerman 14y agoDoes this matter?
- javajosh 14y agoThis is truly an issue with Spring, not with Java. An argument could be made that such a class is a symptom of some cultural problem with how Java developers tend to do things, but the OP is not making that point. The issue with Spring, though, is very real. The key problem that framework authors want to solve is giving programmers the correct slots to place functions in. Oddly, Java is not very good at providing the kinds of slots that seem natural, particularly because of it's lack of lambdas. Plugging a function into a Java project requires that you participate in the inane Type-Name-Game whether you want to or not. Play this horrible game long enough, and you will get the problematic names that the OP has discovered. And it only gets worse for in-house software.
- csense 14y ago"Convenient proxy factory bean superclass for proxy factory beans that create only singletons." It's concise, precise, clear functional description of the class. It's also a profound commentary on the shortcomings of the Java ecosystem. If you enjoyed this, recommended reading: http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom...
- winteriscomming 14y agoThe class made total sense to me. This is common stuff in enterprise software world.
- 27182818284 14y agoSimilar to the classic dig on C++, "If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor, and when was the last time you needed one?"
- joestringer 14y agoOriginal source.. http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html http://static.springsource.org/spring/docs/2.5.x/api/org/spr...
- chris_wot 14y agoBetter documentation: http://static.springsource.org/spring/docs/current/javadoc-api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html http://static.springsource.org/spring/docs/current/javadoc-a...
- sandGorgon 14y agoI have a simple question: is the root to all of this infrastructure problems (proxys, abstractions, etc.), the fact that Java introduces a fear of changing state (i.e. the existence of the "private" keyword) ? Since Java guards private variables so effectively and proselytizes a fear of state, the natural evolution of the community to build these layers. Clojure is not a good comparison, since it avoids fear using immutable state. Ruby/Python is also not a good comparison since, well, it does not respect the privacy of state in any manner. The frameworks that have naturally evolved there, reflect the philosophy of need-to-keep-things-simple (which is the only way to work in a world where state cant be abstracted out). Perhaps if you ask someone to build a Java framework WITHOUT using the "private" keyword, maybe it will lead to a whole different revolution ;)
- labizaboffle 14y agoNo programming language that I have encountered so far is wrong. It is only different. What is "really wrong with Java", not the language but part of the "culture", is a tendency for writing excessive code and xml, abstraction, mocking, etc. but overdoing things happens everywhere. And a ridiculous "Ruby culture" thing was a DSL used for BDD called Cucumber. It promised tests that look like English so that analysts could write the tests, but then you had to write backing code so that would work. But a lot of people still use it. And a ridiculous Javascript thing is Node. Javascript on the server? You have to be fucking kidding me. But now you can get a nice job in SF with JS experience. Pointing these things out is useless. I make a lot of mistakes. Many publicly and online. People grasp onto "bad ideas", but really they are just ideas later proven to be not as good as some other idea. So, write your "everything that is wrong with Java" classes, SpringSource/VMWare/EMC employees. Nothing wrong with that.
- jasonwatkinspdx 14y agoCucumber has some flaws in my opinion, but I think saying its intent was to allow non-developers to write tests is mistaken. It's more a straightjacket that ensures a minimum of mutual intelligibility, particularly when a developer and domain expert are collaborating. Trying to make a tool that non developers can use to write tests is nearly pointless (selenium remote control for example). But adopting an approach where an analyst can look at what's on the screen and say "Hey, no, that's not right. We have to get the foo form in the file before it goes to bar department, not after." It's also nice in the context of CI, where non developers can look at a status webpage and see the state of an app is without drowning in technical details. As an aside, my criticisms: I hate how favors a specific BDD template (As A, In Order, Given, When, Then etc) rather than letting people pick their own language sensible for their project. The product/business people I've put in front of cucumber generally disklike that language, and often feel resentful for it being forced on them. And secondly, I think the way statements are matched to step definitions via regex is awkward. Regexes in general tend toward frustrating abstraction. Do I want $1 or $2 or $3 or wtf was $7 supposed to be again? They also don't compose well. In my experience this choice ends up making the step definitions a cluttered dumping ground that takes more effort to organize than I'd like. I think both of these would be solved by using a more proper grammar mechanism, probably PEGs, and keeping the rest of the tooling ignorant about its specific definitions.
- jakejake 14y agoI guess I don't get what the problem is with this? It seems a fad to me that people are bashing Java, for whatever reason everybody is jumping on the bandwagon. When I look at Objective C the syntax for doing simple things like initializing variables can be incredibly verbose, but all you hear on HN is how gorgeous it is. I admit it is a bit funny to see a class with so many design patterns employed. But nothing about it is difficult to understand and the name is certainly descriptive. I don't see how it can be considered over-engineered without knowing the context. This just looks like one class in a larger framework to me.
- moondowner 14y agoI guess that almost no one here in the comments uses Spring Framework. Maybe the name of the class is long and it's usage (and description of what it does) unclear by non-Spring developers, but know that it's a proof of great understanding of design patterns and of aspect oriented programming.
- exDM69 14y agoA few days ago there was a discussion about spaghetti code, and in the comments other flavors of pasta were discussed. One of them was ravioli. This is a prime example of what "ravioli code" looks like. It's probably as easy to read goto spaghetti as it is to try to decipher whatever this class does.
- chris_wot 14y agoWhat's so hard to understand? It's a convenient superclass for FactoryBean types that produce singleton-scoped proxy objects. If you understand the basics of Spring and how Spring does AOP, then this isn't difficult to understand at all.
- chris_wot 14y agoThis is a part of the 2.x Spring framework that is used only when you need to use some fairly specific AOP functionality. Given its use is very rarely used by Spring apps I hardly think you can a. say this is a Java issue, or b. say this is even an issue with AOP IoC frameworks. In fact, it was posted by someone who doesn't even know what it's used for. I've read the Spring 2.x manuals from cover to cover, and it's a necessary but esoteric part of the framework.
- exabrial 14y agoThe class in question was designed in 2005...