DevOps Zone is brought to you in partnership with:

I am the founder and CEO of Data Geekery GmbH, located in Zurich, Switzerland. With our company, we have been selling database products and services around Java and SQL since 2013. Ever since my Master's studies at EPFL in 2006, I have been fascinated by the interaction of Java and SQL. Most of this experience I have obtained in the Swiss E-Banking field through various variants (JDBC, Hibernate, mostly with Oracle). I am happy to share this knowledge at various conferences, JUGs, in-house presentations and on our blog. Lukas is a DZone MVB and is not an employee of DZone and has posted 248 posts at DZone. You can read more from them at their website. View Full User Profile

The "Free", "Standard", "Open" Software Heresy

08.13.2014
| 3336 views |
  • submit to reddit

There are those people that have a strong, dogmatic belief in what they call “Free” or “Standard” or “Open” software. One of those individuals is Jimmie (let’s call him Jimmie in this article) who has responded to an article aboutJava persistence by Marco Behler on TheServerSide.

Let me cite Jimmie’s response here:

JPA is difficult but complete. It has a learning curve, and you’ll have surprises if you try to shortcut its complexities. But they mostly are there for a reason. Difficult stuff is difficult using JPA, that’s true.

JOOQ is quick to learn. And is proprietary stuff. Not free. Only one implementation. No public review, only one body involved in its evolution. SQL-oriented, not OO (ok, they say it’s a feature).
As a serious professional, learn JPA. Fully. There is no excuse for not knowing which sql queries are generated in your production app. Replacing it with a more basic framework is no solution.

Let’s not go deeply into the concrete difference between JPA and jOOQ / SQL. That topic has been discussed already in lengths on Reddit. Let’s consider the essence of the comparison as perceived by Jimmie. Because, Jimmie would probably say exactly the same thing when comparing

  • JSF with Ext.JS or ZK
  • PostgreSQL with Oracle
  • MS Office or Google Docs (probably OK cause “gratis”) with LibreOffice
  • Linux with Windows or MacOSX (although he might perform somedoublethink as a Mac user)

Software not being free

Jimmie, Is YOUR software free and “not proprietary”? If so, how do you finance it? How do you earn a living? And why are you doing it? What reallymotivates you? What really motivates your customers and why?

Only one implementation

How many people actually do use alternatives to Hibernate and why? Are they using EclipseLink mainly because they used to use TopLink for the last 20 years and the learning curve (or benefit) to switch to Hibernate is too high? How often do you actually switch implementations? What keeps you from implementing the jOOQ API, and open-source its implementation?

And most importantly: Do you always adhere to the JPA API, even if Hibernate has lots of awesome, proprietary extensions that just happen to work so much better / easier?

No public review

Who exactly is “public”, and what are their main interests? Did you know that one of the major driving force for the JDK is Credit Suisse, being a large customer for Oracle in the Java environment, for instance? What is your stake and relation with Credit Suisse as your “public” representative?

Only one body involved in its evolution

Do you say that to YOUR customers also, about your own software as well?

SQL-oriented vs “a serious professional”

What’s not serious about SQL? In fact, SQL is reviewed by more entities than the JLS, let alone the JPA specs. Have you ever thought about that?

More basic

Fair enough. But don’t forget: You probably replaced your sophisticated EJB 2.0 framework (still a standard!) from the early 2000’s by a more basic one, which was (at the time) proprietary, had only one implementation, had no public review, nor multiple bodies involved in its evolution. It was, at the time, called Hibernate. And let me take the opportunity to cite Gavin King (creator of Hibernate) about when to use Hibernate:

gavin-king-on-hibernate

My reply to you, Jimmie

According to you, JPA has to be learned fully. So I challenge you to also FULLY learn SQL, including all the SQL:2011 clauses, including

  • window functions
  • grouping sets
  • common table expressions
  • distinct/match/type/submultiset/unique predicates
  • time periods
  • partitioned outer joins
  • lateral joins
  • standard OFFSET pagination
  • contextually typed value specifications
  • quantified comparison predicates

… and of course all the details of interoperation between SQL and XQuery, one of the most popular aspects of the SQL:2011 standard!

And please, learn this FULLY, regardless of whether these things are part of your specific implementation. Because as a serious professional, you shall fully learn SQL. And while you’re at that, learn also everything about execution plans, and join, fetch, buffer caching, cursor caching and all other sorts of algorithms. Because there is no excuse for not knowing which SQL transformations are generated by your database’s CBO.

I know you like standards, Jimmie. But beware of the fact that there are some people out there who cannot wait for a standard to evolve to solvetheir problems. They may have more immediate problems. More specific problems. Simpler problems. Problems that might be solved only by proprietary software, so far. Or problems that are solved by proprietary software, that can be put into production with much less effort than your standards, Jimmie.

Lower time-to-market is what your customer might consider “professional”. Not whether this or that tech is used.

Someone always invents something proprietary at some time. It might just evolve into a standard. It might have been a bad idea and not evolve into anything. Or it might evolve into a standard and then be the worst standard ever. See again: EJB 2.0. I think we all agree on that, today.

No, Jimmie, the world isn’t black and white. It isn’t just about standards vs. proprietary. About free (libre) vs. commercial. About free (gratis) vs. “closed”. It’s about creating value for your customer.

Oh, and Jimmie. I sincerely hope you’re neither a Windows, nor a Mac user, because that wouldn’t be free, and there is only one implementation of each OS, and no public review, and only one body involved in their evolutions. And yet, the whole world runs on one of them.

Thanks for your attention, Jimmie.

Published at DZone with permission of Lukas Eder, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Yannick Majoros replied on Wed, 2014/08/13 - 5:53am

Hey, that's me! I'm "Jimmie"!

A whole article just for my own reply to some proprietary stuff marketer, this must be a joke. Thanks :-)

You can still see the original thread here

http://www.theserverside.com/news/thread.tss?thread_id=79447

... with my answer too.

And while you're citing others, shouldn't you quote yourself for labeling JPA users "fashits" (sic) in a "ghetto" (as a side note, it was the other way around)? I love this kind of to-the-point arguments :-)

I'm ok for you to quote me for things I said, but could you rephrase yourself after "Jimmie would probably say...". That stuff was pulled straight off your ass.

I understand you're somewhat frustrated with JOOQ being useless with JPA and its implementations doing better for free (=gratis, libre, open source etc. at the same time), but was this worth a whole article?

BTW, would you be honest enough to disclose your relation with JOOQ?

Thanks for this interesting blog post!

Lukas Eder replied on Wed, 2014/08/13 - 6:15am in response to: Yannick Majoros

Hi Jimmie, a.k.a. Yannick.

Not a joke. And I'm not Marco, by the way, who wrote the originally linked "ghetto" article. If you click on my name here on DZone, you will immediately see my obvious relation with jOOQ as well.

And if you think that jOOQ (= SQL) and JPA (= not SQL) compete for the same use-cases, then I suggest you visit our marketing website here. But probably, your notion of "better" is already rock-solid and irrevocable, right? :-)

Cheers,
Lukas

Reza Rahman replied on Wed, 2014/08/13 - 6:48am in response to: Yannick Majoros

Ugh. Feels like I should try to cool down, de-personalize and de-escalate this discussion a bit...

From a JCP, Java, Java EE standpoint it's never a goal to try to squash innovation outside the standard or suggest that using the standard is always the only way to go. In fact it may make perfect sense for many good reasons to use JOOQ with (or without) Java EE and not opt for JPA. This decision frankly is up to the end user (like Yannick) and it's probably best not to be too heavy handed in pushing ones' own view on end users (standard or otherwise). Now, I am not sure if JOOQ can even be used with CDI/Java EE, but there are certainly similar solutions that can be: http://mybatis.github.io/cdi/. It is a valid point that innovation outside the standard is essential for the health of the overall ecosystem for the reasons mentioned in the article (e.g. EJB 2 Entity Beans vs. JDO vs. TopLink vs. Hibernate).

There are unfortunately a few points that I think are worth mentioning here though (that I hope is not worth dragging on/quibbling about):

* Open Source software can certainly be forked and closed source software can be cloned. The reality though is that these are relatively weak forms of avoiding vendor/implementation lock-in from the standpoint of the average user. These risks are without much doubt significantly lower with an open standard that has multiple good, readily available implementations as is the case with JPA.

* There are in fact many folks that use EclipseLink that have nothing to do with TopLink. Folks migrate from Hibernate to EclipseLink and vise-versa all for good reasons. That is the customer choice that open standards like JPA enable.

* It's really quite wrong to imply that the JCP is somehow dominated by Oracle interests or Oracle customer interests. There are clear, open, transparent checks and balances to ensure that all valid viewpoints are given equal weight in the JCP. In fact, the best way to ensure transparency is through greater grassroots level independent developer involvement - which we strive our best to promote and facilitate.

* It's important to remember that JPA does indeed allow users to be quite SQL centric via Native Queries and Stored Procedures if that it what is desired for a given use case or application.

Lukas Eder replied on Wed, 2014/08/13 - 7:21am in response to: Reza Rahman

Great reply, Reza. Yes, jOOQ (just like JDBC) can be used with Java EE, and is in fact actively used this way - even in parallel with JPA by a variety of our customers and users.

However, switching from EclipseLink to Hibernate and vice-versa can be as interesting a change as switching from Oracle to PostgreSQL (or any other database combination), and I do believe that such a switch is hardly ever a use-case for average projects.

Reza Rahman replied on Wed, 2014/08/13 - 7:35am in response to: Lukas Eder

If possible I suggest a write-up outlining how to use jOOQ with CDI, JTA (via EJB 3 or @Transactional) and Java EE. I am certain it will be well received by our community as an alternative to JPA were it makes sense.

Lukas Eder replied on Wed, 2014/08/13 - 7:37am in response to: Reza Rahman

Yes I agree. Such a post is on our roadmap

Yannick Majoros replied on Sat, 2014/08/16 - 6:46am

Well, thanks Reza for your advice. I must say that I agree on most of your points.

What I did mean in my original post, to which this article seems to be a reaction, is that Java EE and JPA are great ways of avoiding vendor lock-in, and that I don't see the point of JOOQ as an alternative to JPA if you want to avoid this lock-in. If anyone is ok with this kind of lock-in, fine for him. For me, that's just what's great in Java EE and I wouldn't even use Java without this aspect. But yeah, that's just me.

I use non standard things all the time. But only if it make things better, filling gaps, etc. Which I question here. Just my opinion.

I understand that the technical approach is different (ORM vs SQL).

I really don't appreciate the paternalistic article-over-an-article approach, and I'm questioning JOOQ's project communication strategy. And I didn't appreciate some things that were put in my mouth. Again, that's just my opinion.

Yannick Majoros replied on Sat, 2014/08/16 - 6:53am

As a side-note, I'm really more OK with the term "heresy" than "ghetto" or "fashism" (sic), so I'll say there is some improvement ;-)

Reza Rahman replied on Sat, 2014/08/16 - 9:05am in response to: Yannick Majoros

Totally understood and appreciated. Clearly there are ways of discussing highly subjective technical material that are less confrontational/professional/personal than others.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.