Discussions

News: For Nuxeo, Success in the ECM Market Meant Switching from Python to Java

  1. How do you proceed when you've got the most flexible and configurable ECM (Enterprise Content Management) product on the market, and you want to elbow out the big players in the industry? Well, the first thing you do is you stop building in Python, and port everything over to Java. That's what Nuxeo did.

    In this article, TheServerSide.com's Cameron McKenzie talks with Nuxeo's CEO Eric Barroca, and Nuxeo's head of research and development, Florent Guillaume, about how switching away from Python, and porting to Java, has helped fuel the adoption of their Open Source ECM product.

    Nuxeo's Experience Porting from Python to Java


    ________

    NUXEO OPEN SOURCE ENTERPRISE CONTENT MANAGEMENT

    Founded in 2000, Nuxeo is one of a handful of pioneering open source vendors responsible for the disruptive wave that is dramatically changing today's software industry. Nuxeo focuses its energy on providing innovative yet pragmatic Enterprise Content Management (ECM) software that specifically address the full spectrum of today’s content-driven customers' needs.

    Threaded Messages (8)

  2. Jython anyone?[ Go to top ]

    I wonder Nuxeo uses Jython.  I would guess that they could have their cake and eat it too but using Java in parts of the application that are fundemental and continue to use their Python code where it was adding value.

    I'm just curious as a I am a Jython user and proponent.

  3. Jython vs Java[ Go to top ]

    We don't use Jython, which is still way too slow at the moment. Maybe after Java 7 and the new features that the Da Vinci project and the dynamic language enhancements will bring to the JVM it will be faster... but at the time we decided to switch the goal was to use a fast and easy to use language with a big ecosystem, and Java was the best choice.

    Also, Java has other kinds of advantages over Python: the fact that it's statically typed language means that you can have IDEs that really know your code. This is not a negligible factor when you have to navigate all the time in a big codebase.

  4. Java vs untyped[ Go to top ]

    That is in fact about the most important aspect in comparing Java with dynamically typed languages. I am an occasional user of Python, and am always stunned at how people manage to maintain large codebases with such languages. My feeling is that many proponents of dynamic languages have never learned to appreciate the advancements of modern IDE technology, because the're still using EMACS/grep (and think they're cool).

    I would say that "analyzing IDEs" like Eclipse are the only pace whrere the term CASE (for those who dont remember: Computer Aided Software Engineering) is really justified.

    Christian

  5. Java vs untyped[ Go to top ]

    That is in fact about the most important aspect in comparing Java with dynamically typed languages. I am an occasional user of Python, and am always stunned at how people manage to maintain large codebases with such languages. My feeling is that many proponents of dynamic languages have never learned to appreciate the advancements of modern IDE technology, because the're still using EMACS/grep (and think they're cool).

    +1

     

  6. Jython vs Java[ Go to top ]

    We don't use Jython, which is still way too slow at the moment. Maybe after Java 7 and the new features that the Da Vinci project and the dynamic language enhancements will bring to the JVM it will be faster... but at the time we decided to switch the goal was to use a fast and easy to use language with a big ecosystem, and Java was the best choice.

    Also, Java has other kinds of advantages over Python: the fact that it's statically typed language means that you can have IDEs that really know your code. This is not a negligible factor when you have to navigate all the time in a big codebase.

    I wasn't suggesting doing the entire thing in Jython.  What I am saying is that if you go to Java, you have all the ecosystem and in the places where Python actually has an advantage over Java (e.g. small scriptable dynamic customizations and metaprogramming) use Jython.

    The really nice thing about Jython is that you can use everything in the Java ecosystem.  That is, you can use Java libraries and objects in your Jython scripts.

    One thing I've done with Jython is that I have a small SQL query interface where I can select a column and add a Jython script that massages the data before it is presented in the grid.  Everything else is in Java.  I use this for doing things like cleaning up phone numbers or adding complex calculations to a synthetic column.  I can then export to a spreadsheet.  People will ask me for some database extract that they think will take hours or days to complete and I can crank it out in minutes.

    The real power of Jython is using it with Java.  The above describes adding Jython to your Java application.  Another use would be to use Jython as a (powerful) DI container.

  7. Similar story here[ Go to top ]

    Some 3 years ago our SLA management product needed a new data collection component. Simple stuff: run a few Linux utilities like iostat, df etc.; capture and parse the output; insert data into a database. The team had a Python enthusiast who said Python would do it easy and well, I said go ahead. Son we had a program that was simple and functional, but not reliable. (It's stuff that had to run 24x7, zero failures, no excuses.) I don't remember the problem exactly, I think Python just didn't have a good driver to talk to the DB (that had to be Microsoft SQL Server - used pymssql, but MSSQL is not the best-supported DBMS in the free software community).

    The same developer ported the code Java, then it worked solid as rock and with better performance... as usual. And the code was not that much bigger, perhaps 2X, but the Python code was still in prototype phase so it had a scriptish style (i.e. one big chunk of spaghetti without even structured modularization let alone OO; no proper error handling/reporting or other 'bureaucratic' details of production code) so I was not convinced even in the productivity/maintainability side.

  8. Similar story here[ Go to top ]

    The same developer ported the code Java, then it worked solid as rock and with better performance... as usual. And the code was not that much bigger, perhaps 2X, but the Python code was still in prototype phase so it had a scriptish style (i.e. one big chunk of spaghetti without even structured modularization let alone OO; no proper error handling/reporting or other 'bureaucratic' details of production code) so I was not convinced even in the productivity/maintainability side.

    Python (in my case Jython) does have some advantage over Java for certain problems.  As was noted above, for large codebases, the dynamic and loose nature of Python can quickly get out of hand.  The largest Python program I have written is now completely unmaintainable by me.

    For smaller amounts of code, it can actually be much more clear.  I have found (as many have) that I write my pseudo-code in Python without even thinking about it.  Understand that I have only used Python casually for a few years and I've used Java professionally for nearly a decade.  It's a tools for the job kind of thing.  One is not better than the other.  It depends on what you are trying to do.  That's the nice thing with Jython.  You can use two different tools.  Just like when I build something, I don't have to choose between a hammer and a screwdriver for the whole job.  I can use both.

  9. Was Scala considered?[ Go to top ]

    I'm curious to know if Scala was considered, and if so, why Java was chosen over Scala.