4 ms·
-Don't use Java Could you recommend a good alternative? Also, could you elaborate a bit as to why not?
by felipemnoa 15y ago
-Don't use Java
Could you recommend a good alternative?
Also, could you elaborate a bit as to why not?
- josephg 15y agoEvery line of code adds spec inertia. Java makes you write a lot of code, which makes it super hard to redesign your project when you pivot on features. Java works fine in enterprise software written against a strong spec. But wave never had a strong spec - It was an experiment. Inevitably, we spent a lot of time making the wrong thing. We needed to be able to change wildly based on user feedback. We needed a light, nimbler language which would let us pivot easily and throw away code. ... And you optimise for a changing spec with a small team and a terse codebase. Today I would recommend Coffeescript, Rails or Scala. Maybe even Go. A few years ago, Ruby, python or C++. Erlang, clojure or haskell would probably work too, depending on the team.
- felipemnoa 15y agoThanks for the advise.
- deleted 15y ago[deleted]
- danmaz74 15y agoVery well said. I'm just really surprised about one suggestion: C++. Even if I used it extensively and with great satisfaction back in the day, and even if I personally don't like Java, I'd like to know what would have made C++ a better choice than Java for terseness etc.
- shin_lao 15y agoFor once it would probably be ten times faster and probably be ten times more concise.
- romaniv 15y agoDoes Rails define so much functions that it counts as an alternative to Ruby? I would say Ruby is a pretty good/modern language on its own.
- efsavage 15y agoInteresting, these are the exact reasons I have trouble using anything but Java. I don't work off specs anymore, and I can pivot/refactor in Java like nothing else I've yet used or seen. Scala might contend with this eventually but the toolset is still not quite there yet. Can you mention a few specific areas/choices where you feel it held you back?
- devs1010 15y agoI would think if a service-oriented-architecture (SOA) were used as much as possible to modularize a project such as this to make it easier to change functionality, was a modularized approach taken or was this just one big codebase that was essentially all lumped into one big "application"? I work on a legacy Java project that has something like 1M lines of code and its a nightmare, the team I work with is finding that modularizing pieces of it into essentially individual projects (which is seamless to the end user) helps with keeping the complexity down, just curious about this as I think the Google employee who did that rant online the other day mentioned something along these lines. I don't think the use of Java would necessarily lead to a project's downfall, I mean how are you going to scale something like this in Python if its already slow in Java?
- masklinn 15y agoWave is probably extremely connection and packet-heavy, so likely something evented, continuation-based or otherwise able to handle a large number of connections on little memory. Erlang, Twisted, Go, stackless, Racket WS, Seaside, Tir, ... potentially behind some sort of load balancer for the evented ones (and the non-multithreaded continuation-based ones) or they're going to block other requests.
- sitkack 15y agoI would probably implement business logic in Lua and do routing/messaging/connection handling with Erlang. Stackless might work, it would be great for a prototype. Too bad there isn't a Python on Lua or a Python to Lua translator. The Lua runtime is soo much better and less resource intensive.