

Java-based Startups, do they exist? - perezd

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. <p>What about Dynamic languages written for Java such as Groovy or ColdFusion? 
======
aaroniba
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.

~~~
eduardorochabr
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.

~~~
aaroniba
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.

------
fauigerzigerk
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.

------
tomh
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.

------
staunch
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.

------
brlewis
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/>

~~~
omouse
Which Scheme are you using?

~~~
brlewis
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.

------
fleaflicker
<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.

------
rzwitserloot
<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).

------
huherto
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.

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

~~~
maurycy
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.

------
elad
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.

~~~
Tichy
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?

~~~
gregwebs
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

------
mattmaroon
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?

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

~~~
mattmaroon
What's Scheme?

Just kidding.

Not really.

------
mironathetin
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.

~~~
centipede
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.

~~~
mironathetin
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.

~~~
brlewis
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.

~~~
mironathetin
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.

------
jsjenkins168
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.

------
davidw
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.

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

~~~
umjames
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).

------
bosky101
wer'nt the folks over at zenter using java?

~~~
mattmaroon
If they weren't, they probably are now.

------
juwo
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.

------
pramodbiligiri
<http://www.applibase.com> \- Almost entirely a Java based startup.

------
danielha
<http://www.mint.com>

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

------
twism
i use java

