Java Vs. Python. Which is better for a Start-Up?
honestmusings.wordpress.com
honestmusings.wordpress.com
> Development: Java will take 2-3 times more lines of code to implement the business features.
That will be true most of the times. Also consider that a good part is Java boilerplate(getters-setters, anonymous classes where you should have lambdas, everything inside a class), and some of it is just bad programming.
Peter Norwig's spell corrector in Python: http://norvig.com/spell-correct.html
In Java: http://raelcunha.com/spell-correct.php
> Deployment: Slower Deployment Cycles.(hence slower iteration).
Errrmmm, how is that property of Java? Deploy it as often as you want. How is Java stopping you?
> Concurrency: Can Java Web Servers(e.g Tomcat Apache) handle high level of concurrency? Answer: Debatable
Answer - My memory might be playing tricks on me, but I remember a few years back tomcat was a reference implementation, and wasn't to be used for production deployments. Currently, the http://tomcat.apache.org/ homepage claims Apache Tomcat powers numerous large-scale, mission-critical web applications across a diverse range of industries and organizations, so I might be wrong. But that's not important - what's important is you have jetty, netty and other options which are pretty fast in practice.
> Node.js,Twisted : Can Java Web Servers give me the same features of an evented/non-blocking I/O? Answer: Nope
Nio? Mina? Netty?
> Python is slow in execution.
Python is slow when it comes to raw CPU. If your app is CPU constrained, either write C extensions or divide work between computation units. Most of the apps are IO constrained, and you can use gevent or equivalent to make it faster.
I eat my words. Fixed it on the post too.
Or use any of the JIT interpreters. Yes there is definitely scope for making it faster.
I need to compile the whole thing if I have to make even a tiny change. Therefore, deployment becomes an event. Events tend to be planned and managed, hence slower.
How is "compile if I need to make a tiny change" affecting deployment? Use Play. Or use other hot code reload options for dev.
As for deployment:
> Therefore, deployment becomes an event. Events tend to be planned and managed, hence slower.
Deployments are events, and they tend to be planned and managed.
1. Check all tests are green(deployment tool can auto-check it).
2. Tag source.
3. fab deploy(or whatever)
4. Do some user level smoke testing that everything worked.
In case of Java, compiling a jar isn't that big an addition to the list. And seriously, it's not like you compile manually when you have to deploy. You set up `ant deploy` or equivalent which will run tests, jar it, tag it, push it, restart server if needed. Deployment isn't different from what you do in Ruby or Python.
In the case of Java and Python, Java is quite clearly better suited to large strategic code such as core systems, whilst Python on the other hand is ideal for quick, often rewritten and short lived applications (e.g 1-3 years life)
as there are many accounts of startups rebuilding their platforms 1-2 years in, i'd suggest theres a good business case for using lean and quick technologies within the first few years, whilst your innovating and learning your business
I wonder if OP knows about Jetty, which seems to be exactly this.
Also, this is probably one of the biggest cancers to HN. People writing low-quality articles, then posting it here themselves.
Are you points-farming, or are you just self-promoting? Either way you're abusing a network for mutual interest for self-serving purposes.