Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Java-based Startups, do they exist?
24 points by perezd on Sept 4, 2007 | hide | past | favorite | 38 comments
I get the feeling that most of the hackers here use something like Ruby on Rails or Django, but obviously I have no scientific evidence to prove this, so that is what brings this question to mind. What about Java? Are any of you using Java at your startup to develop your software infrastructure? If you are not, did you consider it in the beginning? what influenced your specific choice.

What about Dynamic languages written for Java such as Groovy or ColdFusion?



It's important to differentiate "Java" from the "JVM". Java is a programming language that gets compiled to bytecodes, and the JVM is an execution environment that runs bytecodes. (There is some java-language-ish stuff in the bytecode spec, but for the most part you can treat them separately).

In my opinion, Java is a clumsy language but the JVM is awesome. Static typing and lack of first-class functions or easy data types make Java programs verbose and annoying to change. The JVM, on the other hand, is fast, portable, well-specified, and there are a ton of libraries that run on it.

To have the best of both worlds, you can use the JVM to run a more dynamic language (not Java)! There are many projects to bring different languages to the JVM, but my favorite is Rhino, which compiles JavaScript to bytecodes. Rhino is also what powers my favorite web framework, Helma.


IMHO, the language is the stronger point in all of these. I don't care if the JVM is well specified, this brings me nothing to my daily productivity.

What is the advantage of using Rhino on JVM against using native Ruby or Python? In Java, at least I know I will be very confortable doing automatic refactorings with Eclipse, which is the biggest advantage of Java against these other languages. Having coded a tool in Ruby with some good testing coverage, I still don't feel as safe to refactor as I was using Java.


The JVM being well-specified is what allows other languages (like JavaScript) to be compiled to run on it. It also makes it easier to extend.

Rhino on JVM has the advantages of having access to any java library you want (sun distributes many standard ones, and there are tons of other open-source ones on the internet). Another advantage is that the JVM does hotspot optimization which leads to speed improvements. Most other interpreted languages, such as Ruby or Python, are not as far along with their runtimes.

As for Java vs. scripting languages, that's a matter of taste. In my experience the way to minimize bugs is to write less code, and I explained above why Java programs tend to be verbose, so I believe the benefits of terseness in scripting languages outweigh the benefits of static typing in Java.


Java is definately a viable choice, no matter how unpopular it currently is. It has some real advantages over Ruby, the most important being speed, which translates into productivity if the alternative is mixing C and Ruby. Another advantage is proper unicode support.

I still decided against Java because I feel that meta programming could be that great enabler of the next productivity revolution. A revolution that smarter people than me have experienced ages ago. Having explored Java to some extremes, I know that many of the complexities of something like J2EE are down to the lack of powerful language internal meta programming facilities.

Why not JRuby? Because right now JRuby is even slower than C based Ruby and Ruby 2 will have a virtual machine too, which doesn't have to concern itself with anything other than serving Ruby.

Yes, Java has a lot of libraries. But how many of those am I really using in my startup? Quite a few, and it does take me some time to figure out good alternatives for Ruby. But at the end of the day the library issue doesn't make a big difference in my case.

The only thing that really concerns me about the popular dynamic languages is raw speed for algorithmic stuff. Yes I do need that for what I'm doing. If lisp had any momentum whatsoever I'd gladly jump onto something like sbcl because it has all the metaprogramming facilities and it's as fast as C.


We use Java - although, to be quite honest we were a PHP shop starting out, but then we got a big-league client who said they wanted a system built from scratch and, oh by the way, "it has to be in Java". Four years later, we have a mid-size application (80K lines) that operates well and is attracting more clients, though I often feel we have stepped into a few 'pits of despair' while building it. There are several 1500-line servlets which grind away on certain tasks, for example.

The upside is, we are now putting out our I18N'ed version of the product and it was very easy to produce a version of the app in a Unicode-based language, which will probably land us several more clients this year.

In short, Java can be great and there are a lot of things out there to help you build an app, but it only works as long as you keep the code clean and exercise your own discipline to keep from getting too sloppy. Otherwise, you can wind up with code that needs a rewrite from day one.


I sure hope so. I'm a huge fan of my competitors using Java. All these damn RoR and Django guys are too damn fast.


I use the JVM, but not the Java language.

I extended Scheme to make BRL, http://brl.codesimply.net/

I use it in http://ourdoings.com/


Which Scheme are you using?


Kawa Scheme. I'm stuck at release 1.7 though. There are many improvements in 1.8, but 1.7 is so pain-free that I haven't been motivated to get with the times.


Really cool !


http://tipit.to/ is mostly GWT on the front and all java on the server.

CF is crap. Groovy is okay, but not -that- great. I'd go with jython or jruby instead if you're thinking of using Groovy.

Scala is absolutely great. It's my favourite language. tipit's server side isn't Scala based only because I wasn't fully aware of Scala when we started out. Scala is functional in theory but even with a very imperative background you can write your code and slowly get used to solving problems 'the functional way', which does come off a bit cleaner (e.g. using case classes).


http://www.fleaflicker.com/ is 100% java.

I started developing it in '05 before Rails was huge. Using Java has actually been a huge advantage:

There are hundreds of high quality open source libraries. GWT allows me to leverage existing data structures and algorithms on the client-side.


We use Java. It seems a great alternative for us but you do need to know how to work with it and how to integrate it.

We didn't use ruby because it would take us some time to learn it, and I wasn't sure on the maturity. I also prefer strong typing. I have experience with C, Smalltalk, C++, Perl and Java.


Using RoR is like taking a loan. You build it fast, but then spend a lot of time fixing it.


It's true for every language you don't know well. No one writes bug free Java code from scratch after few months of experience.

Also, even if you're right, it's not that bad, as it sounds. It's not possible to write something good at a first try. Code, like wine, takes time. A language that fools you to think otherwise makes your work harder.

I think the whole problem with Rails is the premise that you can create whole sites in a minute or two, literally without any significant experience.


We're using both Java and Ruby. We started out with Ruby and Rails, which worked great for the prototype but we have some very processor-intensive operations and the Ruby code won't scale. Rewriting these in Java produced an instant 100-fold performance improvement, so going forward we're doing that stuff in Java. On the other hand, we have some text-processing stuff where Ruby really shines. Having used Ruby for that I'd never go back to Java for such tasks.


I actually like the regexp implementation of Java, and it is more complete than in most other languages. There are also many options for XML parsers. Where does the advantage for Ruby lie?


Ruby is terser, and yet still very readable. In addition, you will not be getting any performance gain by using a JAVA regex over a ruby regex unless you are using a DFA implementation (if there is one for JAVA), in which case you won't get text capturing.

How many lines of Java code would it take you to read a file given on the command line and print out the prefixes of words ending in 'ing'

ARGF.readlines.each do |line| puts m[1] if( m = line.match(/(\w+)(?:ing)$/) ) end


We may use java for a tiny fraction of our startup (back end of the live game server) for the performance benefits. Does that count?


If you're into Scheme, you can use Bigloo Scheme to generate reasonably fast C code, or even JVM bytecode.


What's Scheme?

Just kidding.

Not really.


Google Web Toolkit, which is Java based. It is not popular among most other hackers though and I'm still not sure why. It is a powerful tool for building web applications if you can make it over the initial learning curve.


I know java since ever and when I think code, I think java. Thats why I use it. For me it is the most productive environment.

Why do you ask at all? If you know java, use it. If you know c (well, not c) - if you know python, use it. If you have to learn something, because you don't know any language, get a job first and think about a startup after you dream in (put here any language).

Any scripting language basing on java will be slower than java. My opinion is: if you can avoid another software layer, avoid it. It makes you depend on more code that you don't control, slows down your apps.


Those other languages that run on the JVM are not based on Java. They do not add another layer. They run on the same layer as Java.

They may be slower than Java nonetheless - because the JVM is designed for running Java.


With scripting language I had something like jython in mind. It is indeed another code-layer ontop of java to interpret the scripts. And, not unlike python, its dead slow in some cases.

Someone reported about a factor of 100 for java against Ruby. jython is only 50. But this is still so bad that I would not waste my time.


You may be worrying too much about speed. Remember, a lot of people have written scalable web sites using PHP, so clearly a slow front-end language is not a big liability.

BRL uses Kawa Scheme, so the code is compiled to JVM bytecodes. The result is slower than C implementations of Scheme, but still faster than PHP.


I don't worry about speed, except we are talking about a factor 50 or even 100. But one thing must be clear: The quick development that is possible with very high level languages is an advantage for the developers. They have quick time to market, fast prototyping etc. The one who pays is their client! This is indeed the wrong point of view!

I think it is desirable to give clients the best possible user experience and execution speed is indeed a valuable point, especially in the web.

A friend of mine still codes assembly if he feels its necessary. I 'am not that fanatic (in facts he is always making fun of java) - but, once you have used his number crunching algos, you'll never go back.


Scala usually results in much faster code then Java. Of course it isn't a "script" language in the usual sense, but are much more modern static and strong typed language (with functional leanings).


Java often feels like "playing fetch" to me:

http://journal.dedasys.com/articles/2006/11/23/playing-fetch

In other words, there's so much makework that a small team is at a disadvantage compared to a bigger team, which is not the kind of playing field a startup wants to be on.


Just curious do people still hack in ColdFusion? I haven't heard from that language in a looong time.


Recently, I had to make my way through some ColdFusion code because my job's external and staging websites (which haven't been updated in years prior to when I got there) use it.

My advice: Run far away from ColdFusion. It does suck as much as you've heard, if not more. I don't know why MySpace is using it (if they still are).


wer'nt the folks over at zenter using java?


If they weren't, they probably are now.


I am using java for juwo. Swing looks kludgy compared with flash, but Apollo Flash that lets it run offline is in beta - and Java Web Start has been running for 4-6 years.


http://www.applibase.com - Almost entirely a Java based startup.



www.dimdim.com I think these guyz use Java.


i use java




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: