Startups Stack Exchange Archive

I am a Java EE developer (more specifically a Spring MVC developer), and I have always worked in the typical enterprise environment (mainly big company and public administration).

I am very interested in technological startups, and I am considering the idea of work for a startup to see something different.

I noticed that most of the job offers proposed by startups are not for Java developers. I know that nowadays the best front end technology are related to JavaScript (AngularJS and React). But it is not difficult to integrate a Java back end to an AngularJS front end (for example; it is absolutely good practice to implement a back end using the Spring Framework and then use its MVC component to create robust RESTful web services that serves the AngularJS front end).

The thing that seems me so strange is that, for startups, the most popular position is for PHP developers. What does PHP offer that Java doesn’t? I think nothing. Indeed, it tends to be much less robust than Java as it is not natively strongly typed. But I don’t want to open a flame war between Java developers and PHP developers.

From my experience, I think that the Spring framework provides a real state-of-the-art software architecture, and I really don’t understand why it is considered the main reference in the enterprise development, but is not considered in startup projects.

I also noticed that Ruby on Rails is becoming very popular in startup projects. Does this language offer something that Java doesn’t?

I am asking if these kind of preferences depends more on the some psychological reasoning, or are related to language learning curve or what…

What do you think?

Answer 9132

This might sound very non-intuitive. But, in most startups, the language of choice is mostly the one which is the area of expertise of the CTO or of the one who built the startup.

Why?

Because, when they were building the company, the priority was to build an MVP as soon as possible, and definitely not the language. So, they generally choose a language which they are most comfortable in, and which can get the work done.

So, going forward, the architecture gets too big and complex. So, companies tend to stick with it, and try to improve it rather than re-writing it into another language. Rewriting an entire company's architecture in a startup is a very hectic and a bad idea.

So nowadays, such problems are being handled by breaking those monoliths slowly into microservices, which can be written in a different language.

The same explanation above works for your question regarding: Why PHP and not Java. too.

Answer 9137

In my opinion, these are the two main reasons:

  1. Practicality. Languages like Ruby, PHP or Node tend to be faster to develop with than Java, even if at the expense of robustness as you point out. However in a startup speed is everything - you need to very quickly develop a prototype or MVP that gets you paying customers and / or funding. I’m actually going through the pain of transitioning from a Ruby/Rails architecture to Java microservices at the company I work for, because Ruby is not coping with the load and number of users we acquired in the meantime. But, choosing Ruby proved to be the right choice to get the company off the ground, and now we have the staff and revenue required to re-architect.
  2. Anti-corporate thinking. As @Dawny33 pointed out, in most cases the language of choice is the one the CTO has experience with or interest in. Many people who decide to create or work in a startup (such as the CTO) have something anti-corporate about them. Either they worked in a large corporation before and want to escape process, bureaucracy, and multiple management layers; or they decided that they want to challenge the status-quo. Java, created by Sun Microsystems (large corporation), owned by Oracle (large corporation), and used mostly by large corporations, is seen as a corporate language. So, some startup founders decide to use other languages to further position themselves away from corporations.

Answer 9146

Why Java is not so popular in software development startup projects?

First - I love Java. I write a lot of code in java. For startups, I recommend (and have used) PHP… ugh. EDIT: Ruby is also a good choice, Python maybe next IMHO /EDIT

In a startup you want a programming language that offers the following:

  1. Fast and easy changes to the visible elements of your product
  2. Cheap labor (or at least, cheaper than your competitor)
  3. The ability to scale “enough” - but not too much

You can’t sell what you can’t see or show to people. So, any startup that focuses on code quality, scalability, extensibility or anything else in an attempt to “plan for the future” is probably wasting their time. You use the term “robust” which is similar to these concepts. Most startups fail. Investors don’t want to spend their money on a scalable, maintainable, “robust” codebase that ends up in the garbage.

The same is true if a startup focuses too much on “getting customers before they have a real product” or “saving money for next year” or “spending money that you haven’t earned.” There are a lot of startup pitfalls - and a big one is not building up tech debt properly. Tech debt is like credit card debt, right? And lots of businesses start off with credit card debt, spending more than they are earning -but weighing that risk against the debt they are accumulating. Tech should not be any different. With a startup you are betting today’s loan against tomorrow’s earnings.

Putting Java in as a solution early could be like leasing an office that can hold 50 people when you only need 5. Or buying 30 cubicles because it’s cheaper per cube, but you only need 10. Or getting an expensive phone system or whatever else might “prevent future problems” - but will you even have a future if that is the choice you make today? That is the core of the issue. However, if you plan to build cars, you need a garage/space at least big enough to build one! So, a company may need Java, but that is different from selecting it as a way of planning ahead.

Answer 9167

As a CTO whose product backend is written in Java/Groovy, I think the answers so far are mostly missing the pragmatic reason: inertia resulting from serious friction that’s been close to eliminated in the last three or four years.

Most relevant for Web startups, managing a servlet container has always been a massive headache, from development through staging to production. Configuration was cryptic, deployments never worked quite right, debugging could be tricky, and container quirks always tended to show up at inconvenient times.

On top of that, Java has traditionally been thoroughly XML-happy. Building a Java Web application involved your POM, your servlet descriptors, your Hibernate mappings, your Spring application context files… It was a lot of externalized configuration adding significant overhead and very little value.

All of this meant that in a big company where applications were giant and sysadmins took care of the servers, the advantages of Java (particularly typing and the huge library ecosystem) gave it an edge, but in startups, the overhead was just too much.

Recently, however, new developments such as Servlet 3 and especially Spring Boot, which eliminates essentially all configuration except for the application-specific settings you want to provide, have made JVM projects even easier to work with than the traditional scripting competitors, while at the same time providing smooth refactoring paths for the future and a single-jar replicable deployment that needs nothing but a JVM installed. This is why a number of companies from Stormpath to Netflix have switched to Boot recently.

Changing minds takes time, though, and over on SO I constantly see questions about complicated Spring configuration arrangements from someone who’s trying to get started based on a tutorial from two major versions back. To somebody who knows that it’s all unnecessary and a working Spring application can fit in a tweet, Java is an obvious choice, but its reputation hasn’t caught up to its new ease and flexibility.

Answer 9138

This exact question was answered by Paul Graham, founder of Viaweb and Y-combinator (so I think his opinion is highly relevant here) in his essay Beating the averages

During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening– that’s starting to sound like a company where the technical side, at least, is run by real hackers.

Read the linked article, it explains differences in power of the programming languages (from his POV).

Also, if your plan includes being bought by Google, you may consider to use the technology they are interested in - and that would be more Python than Java (except Dalvik I guess).

Re @djechlin comments: Heavy usage of Python at Google by one of top Python gurus, Alex Martelli. read it up, Google uses

C++ for the parts of the software stack where very low latency and/or tight control of memory were crucial, and Python, allowing more rapid delivery and maintenance of programs, for other parts.

BTW Guido works for Google too.

Answer 9133

Another reason for this is that start-ups generally need to get the initial release out sooner, with the ability to run on “average” hardware with out breaking the bank. Hence the reason to use languages like PHP etc., that can run on a variety of hosts without the need for heavy duty RAM.

As the company expands, they may well choose the rearchitect the system and use another language. But this will have to be in stages.

Answer 9140

JVM Vulnerabilities

I’m not a “developer”; I’m a system administrator. It is a distressingly-frequent task of mine to replace older Java Virtual Machines in which security vulnerabilities have been found, with newer ones (in which no vulnerabilities have been found … yet). Every time I have to do that, there is a non-trivial chance the new JVM will break one or more of the Java apps running on it, which means going back to the developers and getting them to fix the Java code so it will run on the new JVM, deploying the new code to the QA environment and letting the QA team re-test, [lather, rinse, repeat] until we finally have Java code that will run on the new JVM I can push together with the Java code to production. (Having to replace both at once during the maintenance window overnight is so much more fun than doing one or the other.)

Even if it didn’t break anything, there’s still my time patching, and the QA team’s time to validate that nothing broke. Java has become such a pain point for me that when we recently built out an upgraded environment for one application for which a previous admin had written some glue code in Java, I rewrote the glue in cmd.exe batch files just so we wouldn’t have to put a JVM on the new servers. If I can do something with built-in OS components, and not need an add-on interpreter, I have reduced the attack surface that needs to be defended.

This endless patch/test/rewrite cycle adds to the “total cost of ownership” of Java apps. I can’t be the only person to have decided that cost was too high to pay.

Answer 9134

There is a certain startup way of thinking that says “open source is good” and “proprietary is bad”. We have pitched for work in a few startups (I do MS SQL Server) and was told that they only use open source languages.

This isn’t meant to be a rant against open source. I love it, and use R, but I think the rationale could be some of the following:

Answer 9182

  1. There are many startups. Most of them fail. If you want to look at the relationship between programming language and startups, you would do better to look at the ones that last a little while.
  2. You focus on Java Enterprise. As a CTO, I don't know anyone who knowingly touches J2EE with a very long pole. I know a fair number of people who code computational, parallel, tasks in Java. Look at the entire Hadoop ecosystem.
  3. As others have explained at length, many early-stage startup start by worrying about the user experience, building a minimal back-end. That generally means 'Angular' or something like it as the actual front end, there are a number of ways to bang out an initial back-end.
  4. The jobs advertised as, of course, the jobs that the core founders aren't doing for themselves. (Excepting the infamous code monkey case). That might skew things in various ways.
  5. If, as others have pointed out, you are racing to get noticed before you burn through your angel money, well, you are looking for a very lean approach. Unless you are working in one of the Java ecosystems (see remark about Hadoop), the mere fact that Java requires compilation should lead you to wonder if it's going to be the fastest path.

Answer 9183

Disclaimer, my last startup was half Java and half Node.js, we seemed to survive.

I think this is actually an extremely fascinating question. In my opinion, the answer is almost entirely cultural. Tech stacks, in particular languages, are an incredibly powerful way for a company to signal to investors and recruits just what the company is all about.

Some loose stereotypes:

I think there is a sociological feedback loop: once these stereotypes have bubbled up - and they certainly have - companies will double down on them to differentiate their offering. You might peruse the StackOverflow developer survey results for some evidence backing what languages are “cool.”

And I must address the fact that there is really no reason to give Java primordial prefence. Some developers don’t like Java. Some start startups. Some join startups. Who are you to silence them because you like Java? Whether Java is a “good” language is an awkward question, but there are many other languages people think are very good, would love to spend their day job coding in, and usually can’t in a “corporate” setting because Java is a proven language and the upside to migrating off millions of lines of code in a proven language is small.

Startups do not have the legacy factor. Some developers who either love hacking in new languages with beautiful features in their spare time, or developers who hate Java even for personal or political reasons like despising Oracle, have created thriving open source communities and code bases making it as easy for a startup to get up and running in Ruby or Node.js as easily as a corporation like Facebook or a media company can spin up a new web server on their own Java or PHP stack.

I’m sorry to say that many other answers given in this thread are nonsense.

TLDR: Java is dead, long live Java!

Answer 9152

To be honest, it's because "Java Sucks".

Now, let me be clear, as a language I actually like Java. I like how it works, and if I have to choose a strongly-typed language I usually would pick Java. That being said, this is what I see happening at startups all the time:

CEO ask around, and asks some developers, some people, some UI guys, "What language would you use?"

All the guys, have their different favorites, and one of them even suggests Java.

All the other guys, go "Well, Java's nice, but this one time..."

The CEO goes back to the "Java supporter" and says "everyone has a horror story", and the supporter is stuck going "well yeah, if you write bad code bad things happen".

The overall attitude of the group gets summed up as "Anything but Java!" or "Java Sucks!", even though individually, each person on the list only has one or two bad experiences with Java code.

What it really comes down to is that Java, as a language, has not received the "good vibes" that other languages have. The companies that "run" it have a "bad" or "no fun" reputation. Every developer out there can think of at least one horror story in Java.

It's simple: Bad public relations.

Play the game in your head:

What's a popular, well-supported, profitable application (that you didn't work on) written in...

What is a terrible, unprofitable, slow app written in:

Which ones can you answer faster, without the use of Google.

Also keep in mind that companies that write Java applications, tend to try to hide the fact that it's a Java application at all. This is true for games, desktop applications, web applications, and all.

Java just has a bad reputation. Plain and simple. I don't think it's a well deserved reputation, but it has it all the same.

Answer 9178

What do other languages offer that Java doesn’t? With startups in mind there are a few examples.

Go

Go has a few design features that make exploratory programming very pleasant. A few examples I can name:

Python

Its syntax sugars are very addictive.

["FizzBuzz"[4 if i % 3 else 0:4 if i % 5 else 8] or i for i in range(1,101)]

JavaScript

With Node.js you can use it to drive your server too. This can be extremely helpful because people that like the same languages are more likely to have similar thought process. Front and back developers communicating efficiently can be the key to success.

Also, in case the team composition changes, people can be much more easily swap places and continue with the work.

But what does it mean?

Startups are typically small so each person is vital. Morale has to be high, fatigue low to keep everyone focused.

Java, with all its keywords, infers a very rigorous design process. Or so I thought, before I was pointed out not factually correct in the comments. That exposed the more fundamental problem: there might be people thinking that Chekhov’s gun applies to keyword use and others who don’t, so there’s potentially more things to disagree about.

Bottom line is that there are far more nimble languages than Java. Even if they are less safe the results can be produced sooner. Everyone likes results.

Answer 9180

Later edit: The short answer: because java sucks.

The long answer: I think if you ask a thousand startups this question, you’ll probably get a thousand different answers.

I’ll tell you why we don’t use Java in our company:

We do financial transaction processing, sports and gaming solutions. Our platform is a self-scalable, agile hybrid consisting of about 5M lines of PHP and Ruby code sitting on top of about 50Gb of highly volatile data. We keep this in MySQL clusters and a distributed graph database.

Before Java we tried .NET. It was a nightmare, almost took the company bankrupt.

Probably in the future Node.js will bring even more agility into our platform and also help lower the bills a bit more ;)

Also, some years ago before I started doing what I do now, I worked as a consultant at a bank. They were building their intranet on a Java stack, it was GREAT at laundering money, basically about 50% of what the bank was paying in development, maintenance and hardware went back into some managers’ pockets.

Cheers.

Answer 9143

I don’t use Java, but I am a developer (PHP, Python, Javascript) and do have experience with startups. With an early-stage startup, speed is of the essence. When you have no revenue to speak of and you’re paying your developers using investor money, you want to have something to show for your efforts as quickly as possible.

It goes back to the fast/good/cheap triad. For most startup software products, they want it fast, and they want it cheap, and they’ll wait until there’s a proven need for it before they worry about making sure that the architecture is sustainable or can support growth over the long term.

Some languages and frameworks are designed to promote rapid application development and others are designed to promote stable, scalable architectures with large surface area. I would say that languages/frameworks like Ruby on Rails, node.js with something like Express, PHP with something like Laravel tend to fall more on the “rapid development” end of the spectrum and languages/frameworks like Java/Spring, C#/.net fall more on the stable, scalable end.

Answer 9215

Another misconception is that Java might be better than Python because Java code executes faster. The only speed relevant for a startup is speed to the market - and experienced coder can produce code much faster in Python than in Java, because Python compiler works much harder for the programmer (offloading many decisions which Java programmer has to do).

Also, if 90% of your code is spent in calls to database libraries (same for Java and Python), there is no way to improve speed by using Java enough for it to be relevant. IOW: Optimizing outside of bottleneck is waste of effort.

Citation:

Heavy usage of Python at Google says:

C++ for the parts of the software stack where very low latency and/or tight control of memory were crucial, and Python, allowing more rapid delivery and maintenance of programs, for other parts. … Java came in later, covering an intermediate niche

(so Java is faster to develop in than C++ but slower than Python)

Also, personal experience.

Answer 9194

My answer is very incomplete but I hope it brings one more aspect for some niche startups.

Answer 9172

TLDR: Java is scalable, works great with big projects, but has a lot of overhead code to achieve that. Javascript, Python, and other languages do not suffer from that problem while giving you considerable scaling opportunities ( perfectly acceptable for the first version of your product; and ever further )

I’ve personally worked on a few startups with various languages. Initially a .Net developer ( so yeah inherent smash to “puny java” ). Here are some of the startups/projects I’ve worked on:

Overall - by all means it’s good to use something you’re something super comfortable with, but it’s even better to use something that allows for rapid development. Writing a whole app in javascript cordova ( without ever using it ) took less time than actually finding out how the Xamarin framework ( the biggest .Net thing for mobile apps at the time of writing ) even worked.

Answer 9187

Here is one dated Java experience from a different industry.

In 1998 I co-founded a startup in the electronic design automation (EDA) space. I was 'in love' with Java then, it seemed to capture many nice elements of C++ (which I used from painful Cfront days) and I bought into the WORA mantra. Another plus was Swing, so we could slap together a GUI fairly quickly in a fairly integrated way. Since TCL is a standard scripting language in this industry, Jacl was yet another point in Java's favour. We used JNI & dynamic libraries to encapsulate C/C++ libraries for underlying algorithms.

The setup was awesome for small experiments and early product development.

It quickly hit performance issues, and "memory leaks" (not exactly leaks in the C/C++ sense, mostly mismanaged data, or unexpected accumulations in things like hash maps). We also kept hitting dynamic .so issues on various platforms which chipped away at the WORA idea. (Since we were using JNI we were crossing the line ourselves, but the issues we hit were not with our .sos, but with java needing to have certain libraries at runtime. Even Solaris was not immune. As a two man company in a fast-paced industry, the IT folks were often understandably unsympathetic to our requests for .so updates!)

Not having a solid body of relevant knowledge (such as existed with C/C++) meant a lot of wasted time trying to find solutions. The folks at Sun were available and looked into many problems, but the response timeframe was way outside what we needed as a frantic startup.

Swing was awfully slow in that it didn't scale well with larger data, drag & drop was often painful. In fact, the first major change to the underlying product was to move the Swing interface to Qt (thanks Brajesh) and the difference was enormous. Later the other parts of the product were migrated away from Java.

In many cases, the convenience of Java allowed us to delay many design decisions. This was both good & bad. Doing something in a quick & sloppy way is fine if a route to clean & fast is fairly straightforward, but sometimes it reflects a bad architectural decision which is painful to change later.

Answer 11558

In my case it has to do with development speed rather than robustness or performance. Ruby on Rails is slow, but developing a webpage is easy and fast. Speed is everything when doing an MVP and getting funding.

Answer 9142

Mostly clients don’t prefer Java projects to Startup.Because mostly projects are big and costly. and Other thing is Java Developers are more costly compare to Php, Dot Net and other opensource.

Answer 9144

I think one of the reasons why some people prefer PHP over Java (I’m a Php backend developer working with MVC, but I learned to code OOP using Java at school and oracle Db) is because some people think that Microsoft and Oracle are evil, and you should not use them for developing (a shitty attitude, but I saw that often). But I think an important one is that PHP servers are cheaper.

But I personally like more strong typed language or python.

At least is what I see in Mexico.

Answer 9150

A startup needs to get a working product out as soon as possible. Think “or you will all be out of a job,” not “or the release will be delayed.” With a brand new team and not enough time several things may be off the priority list:

If you need to show something to the people with the money by Tuesday you’d be prudent to just get something done. But once the concept is proven you’ll want to pay down that tech debt to move faster in the long run. And that’s the time to review choices like programming language.

Answer 9176

It’s cultural and political. Big corporations are conservative, and their decision makers are generally not programmers. They want a proven product, backed by a big company. It also can help them in their industry to be aligned with either IBM (Java) or Microsoft (.NET).

Startups tend to be anti-corporate. They don’t want all the mandatory overhead of a big corporate programming language. They tend to be run by programmers –probably self-taught –so they’re more likely to favor open source languages like php, or cutting edge technology like node.

Answer 9207

It is the methodology versus ‘what works’ balance. Methodology is something a programmer needs to write good code. Customers only care about ‘what works’. Since Java is a well established language with libraries and frameworks to boot it has a lot of methodology. The only problem is, if you as the programmer do not understand the methodology well enough it becomes like bureaucracy and overall quality as perceived by the customer will suffer. With languages like PHP you can scale up your methodology when it becomes necessary allowing the programmers to focus more on ‘what works’ giving the customer what they need. However this does often require rewriting the code several times over the life time of a startup. But that is survivable, going bankrupt to loss of customers is not.

Answer 9209

Java web applications are not supported by static file hosted web servers. (Like Firebase, for example. Which I highly recommend.)

As an entrepreneur with several apps built and released, I looked into doing a project in Java. Then I encountered the above problem and moved on.

From an entrepreneur’s POV it is important to be able to release an MVP product quickly, efficiently and with minimum friction and cost. Free hosts mostly only host static files. Which means strictly HTML and JavaScript for front-end development.

Answer 9309

I’ll try to explain my view after 25 years programming, I’ve used ruby, python, php, javascript and mostly java. I’m the CTO in a new startup that pretends to create a fast development environment creating a reusable, complete and universal single page web app on the front and a complete,secure and scalable app and web service on the back. I’ll explain our decisions and aims: 1) The front must be developed with html, css and javascript, on a single page web app. Then you can deploy on android, ios, etc. using cordova library. To improve responsiveness and interface we choosed React, libraries for maps, tables, calendars, charts, qr, barcode, photo capture, gps, etc. Then code our front app for reusability and multilanguage. 2) Communications with servers are compressed ajax. Servers are secure linux servers with Apache 2 and SSL. 3) A Cassandra distributed database on our cloud servers so we can scale to as many server as required to hosts all our databases and apps, with a flexible data structure to cover every need. 4) Server side java over tomcat server. Why? -With well secured servers we don’t need to install any new java version. -The only performance advantage of node.js, queuing of http requests is implemented in our apps via a library. -Java is strongly typed and more maintainable the any other script language. -Java have all required libraries for actual and future apps to develop on our platform. We already use Lucene for text indexing, RTrees for geospatial data, finantial functions library, etc. -Java has all data structures you can thing of, and we think twice when using new ones so we prevent inter threads bottlenecks and hangs or memory allocation problems due to structures misuse. You will not find another language with better documentation and support. In my experience, is not true that java use more memory that other languages, is just you must use the correct data structure and in the correct way. -tomcat is a fast, reliable and well engineered server, with many years of development and improvement. -Java virtual machine has a lot of tuning options to adapt to the host server and the app use. Also free tools for profiling and detect problems. So scalability is assured, not so in any script language. -Java execution speed tests compare Java to C++, various orders of magnitude over same code execution in php, python, ruby or node. -Expensive experienced java programmers will not be needed once the platform is finished and ready to host any new development, almost without write new lines of code.

Our main aim in our project, no matter the cost, is to create an universal and reusable app concept, so we can create new apps and deploy on our servers in days, both for our internal projects and for our startup clients. Maybe have been a longer journey this way, but now we are sure we have an scalable and solid framework to implement as many web services as required on it.

Answer 9357

In my opinion, the only reason is because Web languages are easier to sell. HTML is sucks, XML is sucks, PHP is sucks and many other web things are actually sucks, but they are winning just because they are wide spread and thin client oriented, easy deployable into any browser.

Answer 12878

There's one major simple reason: it's too costly (and therefore also ~= slow) development-wise.

Now, most of the answers here do not cite empirical data and measurements. This answer is different:

Comparison of lines of code by minimum

Table 5 shows the results of the pairwise comparison, where p is the p-value, d the effect size, and R the ratio, as described in Section II-F. In the table, ε denotes the smallest positive floating-point value representable in R.

Figure 6 shows the corresponding language relationship graph; remember that arrows point to the more concise languages, thickness denotes larger effects, and horizontal distances are roughly proportional to average differences. Languages are clearly divided into two groups: functional and scripting languages tend to provide the most concise code, whereas procedural and object-oriented languages are significantly more verbose. The absolute difference between the two groups is major; for instance, Java programs are on average 2.2–2.9 times longer than programs in functional and scripting languages.

Source: https://arxiv.org/pdf/1409.0252.pdf

There are other reasons as well:

A startup might have to, I don't know, pivot sooner or later? Even when the change is not that ground-shattering, significant rework of the product is highly likely to happen.

If you're writing in typical Java style, you can't really do that. An example: one of the top-requested features on Bitbucket was Github Gist-like snippet "repo". After a big furball on the Bitbucket forum about this, the company dev wrote that they will not implement this because "assumptions [preventing this feature from implementatoin] are baked in too hard into the [bitbucket] system now" (quoting from memory).

Having worked with large Java code bases, I'm inclined to believe that: there's just too much code (verbosity) and typically it relies way too much on inheritance hierarchies instead of favouring composition (per famous rule) for this thing to be humanly possible to rework in short time. That's lethal for startup.

My own startup used Scala. Having worked for several years with Java before, I'm positively sure that had we used Java, we would not get anywhere near as far as we did in terms of dollar/hour spent per working feature.

An hour here, an hour there and pretty soon you're talking about serious time waste.

A big corpo might tolerate cost overruns and delays in software development project - generally, the bigger the project, the higher risk of delay and cost overrun anyway (google articles by Capers Jones). A startup is in no position to do that.

Answer 9239

People that say PHP is not scalable or is not good for big data/companies seems to forget that PHP is present in:

Just to start. And about Java, why on earth would I want a language which forces me to pay so much for a hosting? Besides, browsers are now disabling Java like they did with flash. It’s a nice programming language to teach students and that’s all.

To finish, Java fans needs to thank Android otherwise the language would be dead by now.

Answer 13443

Java is not obsolete, but you in order to stay competitive with alternatives, you need to develop with the new technologies: serialize to and from JSON and XML with Jackson and JAXB, build web serverices with Spring, access database with Hibernate, use Gradle for builds, use Mockito for testing, BouncyCastle for cryptography, use Elastic Search and Cassandra where they fit better than traditional databases, use Protocol Buffers for data, also look into Scala, Play framework, Android and projects the like.

Due long history of the language, there are many legacy approaches that are no longer viable, and some that are even no longer secure. I believe there is also significant code/configuration bloat around J2EE XML stuff, and also, of course, CORBA if anybody remembers. Alternative technologies claiming they are faster and easier usually assume Java developers still mount these dinosaurs into his chariot. I fully understand the startup founder looking into J2EE web server configuration like this and thinking how could we use all this when just one line of code is enough to bootstrap a server in go (also good language). No, masters, a Java wolf will build a server like this for you, and will be seen if would take any longer than for a node.js guru. But, probably, not everyone is aware of of. If the node.js guru comes first, he can say Java developers only develop around Glassfish and be believed.

A good Java developer knowing today's technologies well still can beat many "much easier" approaches by the factor of two at least, this is just by taking development time into consideration (have been in such competitions). Of course, individual differences between the developer matter, but it is still far from saying that Java is the language you cannot win with.


All content is licensed under CC BY-SA 3.0.