Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been focusing on multimedia applications and I've noticed that most applications don't use Java in the back end. Instead, I see solutions with PHP/ROR/Python and Flash/Silverlight without any trace of Java in the application stack.

What part of Java is either limiting or constrained - or perceived as limiting or constrained - when building multimedia applications?

Let me clarify, when I said Java, I meant Java EE. Of course on the client side people will use flash or html5 for audio/video. But what I am trying is that, why is most multimedia platforms backend is created with PHP/ROR/Python(Django)? There are many audio distribution platforms out there. soundcloud.com (uses go lang), tunrtable.fm (uses Python) youtube.com (uses PHP), is Java EE not capable of doing those?

share|improve this question

closed as primarily opinion-based by gnat, GlenH7, Simon, jwenting, Bart van Ingen Schenau May 23 at 9:51

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
Just like you like to program in Java, other people like to program in PHP or ROR or Python. –  DFord Feb 20 '13 at 15:35
1  
I'd argue that this is a fine question. It may need some edits to make it more clear. –  Craige Feb 20 '13 at 18:15
1  
Java applets were neat when they originally came out but they had poor performance & didn't evolve to handle rich multimedia content. When Flash came out it had better performance & a smaller footprint with less installation hassles, leading to it taking over the market and developer mindshare. Once Flash became dominant, Java in the browser pretty much died off outside of a few niche uses. –  Sean McSomething Feb 20 '13 at 20:28
1  
Perhaps it has something to do with all the security bugs that made companies uninstall Java plugins from browsers? –  MrFox Feb 21 '13 at 15:11
1  
@MrFox From the comment above yours - I meant Java EE - this is not client side browsers that is being mentioned. –  MichaelT Feb 21 '13 at 15:16
show 11 more comments

4 Answers

up vote 3 down vote accepted

I think all you have to do is look at the industry all around and you'll see the same pattern. PHP, Ruby, and Python are the preferred languages these days for building web applications. This is largely due to their interpreted nature and low barrier to entry (compared to Java) making development fast, easy, and cheap. This makes it ideal for somebody to hit the ground running when they have an idea.

Java EE is absolutely capable of handling the same tasks as any of those languages, whether the application is multi-media or otherwise. Java however, is compiled, verbose, and expensive (developers). This makes it not an ideal solution that everybody runs to when they want to rapidly prototype something. Java's limelight has been in the enterprise where companies are willing to shell out hundreds of thousands for developers, who quite honestly, are *usually better trained than the majority of PHP devs.


*= That's not to say that PHP devs are untrained, but rather by sheer numbers and barrier to entry means you'll encounter a lot MORE untrained/undertrained PHP programmers that you have to weed through. (Source: the last company I worked at was looking for an additional full time PHP dev. We interviewed a lot of amateurs.)

share|improve this answer
    
what's wrong with being verbose? –  KyelJmD Feb 21 '13 at 16:42
    
Nothing is wrong with it. I prefer verbosity for the most part as it makes things clear. However it doesn't make it easy to get up and running fast, as compared to other, less verbose alternatives. Verbose ~= more code. –  Craige Feb 21 '13 at 16:47
    
@KyelJmD typically the deadlines and timetables for web applications is much tighter then for desktop applications (which is sorta dumb (and why we have so many crappy websites) but that's an entirely different matter). Verbosity typically does not make for faster development cycles. –  ryan Feb 21 '13 at 16:47
    
@KyelJmD Verbosity hides meaning and obscures what should be simple. –  Andres F. Feb 21 '13 at 17:06
    
@AndresF. - Simplicity hides function and obscures what's actually very complicated. –  Craige Feb 21 '13 at 17:09
show 2 more comments

If by multi-media you mean things like video sites, Java is a reasonably common, albeit not the most common choice; it is certainly capable of doing it though. One of the nicest multi-media servers I have come across in common use is Wowza which is written in Java and is very performant and easily extensible.

Youtube is actually Python, not PHP. The google stack is C++ / Java / Python. Very nearly everything they do is in one of those 3 primarily.

share|improve this answer
add comment

Well apart from the fact that Java EE started as an interface to CORBA and as such will always be tainted with the dreaded "curse of CORBA".

There are a number of anomilies with java EE servers. Yes they should be faster and yes they should be easier to use and yes they should be more reliable -- but for the most part they are not. If you are stuck waiting for minutes at a time for an e-Commerce server to respond (Air France and BBVA come to mind) then the chances are that the back end was built with Java EE.

There are reasons for this.

The early Java EE APIs were awful (EJBs in particular) ate up enormous amounts of programmers time and created thousands of lines of technical code that had nothing to do with the business application in hand. Programmers were so pleased to get anything appearing on the browser they did care how clunky it was.

Then there is the Java culture of over engineering -- why define Pi as a constant when you can have an abstract constant factory which reads an XML configuration file telling it where to find the XML file with the value of Pi.

Proprietary hardware, most enterprises had standardized on Solaris or AIX when Java EE came along and so built the new web based infrastructure on what they were familiar with. Nice though these machines are they cost at least twice as much as commodity x86 so most of these sites cannot take advantage of high perfomance, cheap x86 linux systems without significant re-engineering.

PHP works! Like COBOL or VB before it, it is intensely disliked by language purists but tens of thousands of successful business applications have been built using these "ugly" languages.

The surprise is not why more sites use Java but why more sites do not use Python. Even though there is a proliferation of web servers and frameworks they are pretty much all excellent. YouTube, Google etc are pretty impressive as reference customers. Not to mention it has a serious kool factor.

share|improve this answer
add comment

Actually, the answer is simple. If you use Java to compare, the answer will be the development cost.

Let me make it easier, PHP/Python are used as server side scripting when Flash/Silverlight are used as client side scripting. If you want to utilize java for this purpose, you will need learn how to handle java servlet, inside an application server, and also properly design an applet or JavaFX component. By using Java, it already gives you additional burden to learn more about programming.

On the other hand, PHP/Python allows you to start everything with instant result, without necessity to learn everything properly. But please don't get me wrong. I'm not saying Java is more powerful. PHP can be used to create something big.

At this moment Java is used when there is a need to protect some commercial code that can be done without any cost (Open Source). If you want to use PHP to achieve the same result as Java, you can have a look at Zend framework as an example.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.