Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
When I do a job search for a .Net developer it's all mostly the same stuff .Net, ASP, SQL Server, CSS, Javascript, AJAX, and maybe C#. Whereas with Java you may have to have Java, Sturts, Spring, JSF, EJB, a RDMB, Eclipse RCP, CSS, Javascript, AJAX, Rest, any number of specific Java APIs. Is it easier to be a .Net developer since the technologies are so focused? Or does it just seem that way?
It's different, rather than easier.
The reason the Java jobs are listed against frameworks is becuase Java has tons of frameworks and design patterns ready to be used to make things easier to maintain. The design patterns and frameworks are starting to appear more in .NET now too, so expect to see jobs changing to look more like those Java jobs.
There are just as many patterns and practices in both worlds - but they are more established in the Java community (the Java employer will push them onto you, you will find yourself pushing your .NET employer).
Largely, Java vs .NET is syntax. Do either (do both!). But be aware of the patterns and frameworks as they'll really help you to write better code.
I'm a C# developer, believe me, there are more choices in Java than in .Net. The obvious advantage in .Net, though, is that in any job you land uses the same IDE (Visual Studio) and (in most cases) uses the latest .Net framework (except for maintaining legacy apps). There may be some subtle differences in different employers such as them using Enterprise Libraries, MVC versus Forms, WPF, etc.; But if you're a seasoned C# developer, you can adapt easily depending on your fundamentals.
Some developers in my field who did not learn any other programming languages tend to be lazy and simply drag-n-drop objects to accomplish tasks 80% of the time (some of them even believe that object-oriented programming is simply code with objects). If you are familiar in C++ or any C based language, you will definitely have the upper hand but that is not a requirement.
I'd suggest learn the best programming practices, never put all your eggs in one basket (even though god did that to us men), and be open to other languages other than C#. If you learn one C-based language, learning other major languages won't be as hard rather than starting with VB.Net.
Either way, both of them are well paying jobs and you won't regret if you choose either one.
my 2 cents.
Yes, with Java you have web frameworks like JSF, Struts, Struts2, Wicket, SpringMVC, Stripes, Tepestry, Facelets .. just to name a few. Every company is using different frameworks, so if you change job you will learn new frameworks. And its only web framework, what about persistance ? JDBC, Hibernate, JDO, iBatis. Who can name 5 mocking frameworks for Java? Who have used 5 different application servers? What about databases? Ive even used Informix and Teradata. I think all .NET is using Sql Server and its easier to learn one database well.
Please don't forget about the following .NET technologies: Win.Forms, Silverlight, WCF, WPF, WWF... There are still a lot of learning in .NET outside of web development. It is not easy to be a senior .NET developer, at least not much easier then Java. However, IMHO it is easier to start in .NET when you have no past development experience.
In Java world, you develop with technologies from many communities, in .NET world, you only work on technologies from Microsoft. In my opinion Java developers are more free in terms of choices of technologies, but sometimes it also brings you problems. :)
Java itself has more fields coming into it; I mean, Java developers have now more opportunities than any other technologies in the market. They are being hired at attractive compensations to develop different java-based applications, software and games etc. It will continue to be increased in future as well. Just stick with JAVA :)
Let's line up the technologies you mention (and some you don't). This will necessarily be somewhat imprecise so will be a nitpickers paradise :)
.NET Java The overall encompassing technology
ASP Struts A Web development framework
JSF
(.NET BCL?) Spring An application development framework
EJB
SQL Server an RDBMS A database
(VS) Eclipse An IDE
CSS, Javascript, AJAX, REST are all technologies common to both stacks.
The technology concepts you have to learn are the same whatever stack you choose - it's just the names are different. The .NET ones will all be 'Microsoft Blah Blah Blah', whereas the Java ones will all have funky cool names...
Something else important to consider is that you can get "branded" as a .NET or Java developer midway into your career. At that point, it becomes more difficult to switch, since (understandably) you have less experience in the one you didn't choose. Thus far, I have been alternating, but that comes with its own set of problems where you have gaps in experience with new libraries/frameworks on each side.
Any other thoughts on the pros/cons of developing Java vs. .NET? For instance, what types of companies, cultures, pay, etc?
For me, it seems like .NET tends to be in more established companies whereas Java is used by a lot of startups (given the low cost entry and open source libraries available). The pay is comparable, but .NET seems a little higher. Java development might be a little more fun given that you get to play with new frameworks more often and aren't as restricted to specific paradigms.
In talking with my .Net pals, it seems like getting started on something pretty standard is easier, because most people do things the Microsoft way. Java's large number of choices means you have to pick libraries and toolkits at many different levels. The upside for Java is that when the official or common way doesn't suit you, there are a lot more options available.
In practice, I don't think it makes much difference. Any single Java shop will generally settle on one particular thing. E.g., Struts or Spring or JSF, not all three. Hibernate or Ibatis or pure JDBC, not all three. So I think there's about the same amount of stuff to learn, in that whether you're using a Java stack or a .Net one, you're still solving roughly similar problems.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm creating an Android application which will access data using a restful web application.
I have quite a lot of experience with Java, but minimal experience with PHP.
Having looked online, it is difficult to determine which language is more suitable, scalable, portable etc.
I'm hoping that the Application may one day have many concurrent users and therefore I need the most suitable option.
If anyone has any experience writing a web application in either language, I'd be really interested to hear about your experiences, and any problems you faced.. i.e. for a java web application do you need a tomcat server or another embeddded to server for it to be able to run?
Thanks, for any answers, Matt.
If you already have experience with java, I would suggest you use the following to build your REST services: http://restlet.com/
Its very easy, and efficient. The performance is very smooth. For PHP, you will have some learning curve, and also there is no standard. Mixing java with PHP is like combining a VERY STRICT LANGUAGE (java) with a VERY LENIENT LANGUAGE (PHP). So its safer to be on the same language.
Tutorials:
Official tutorials to get started: http://restlet.com/learn/tutorial/2.2/
Good step by step tutorial with screenshots and code snippets: http://java.dzone.com/articles/restlet-framework-hello-world
Short:
Take JAVA!
Always choose the language you are comfortable with. Also I think Java is better suited in the end.
PHP isn't my favorit. Most of the people like it, because it is easy to start with. (It was also for me the second (non Browser) language I touched.)
Framework Tips
WebFrontend: Play Framework
Back End&Scaleability: AKKA
JSON: Gson
Long:
Scaleability in the meaning to scale to lots of concurrent users:,
is more a architectonical issue, as a question for the right language. You can write scaleable software in any language. The difference isn't the scaleability of a language, but it could be the performance. One language will take longer for the same task as the other one. But you could always throw more Servers in, to scale out.
Architectures to consider if you want to scale out, are in my opinion message based designs. My favorite is the actor model, there is a very good framework for that in Java, the akka framework (production proved). But I think you first should get your software running. If you get enough users... scalability problems are the problems you like to have (they mean you have users).
Scaleable doesn't only mean, that you can scale to many concurrent users. But the ability, to handle the complexity of the software or can handle concurrent development and so on (your team will grow, thats also a problem to handle). In this topics Java is as clearly static typed OOP language, better suited.
Also the performance will not be as good as in Java (it is a interpreted language). But there are always options. Facebook started with PHP. In an interview one of the lead developers, told that PHP isn't that scaleable, because PHP wasn't designed for OOP. But the performance issue was handled, through writing a compiler for PHP (outputs C++). [If if find the link I will post it] .
Update the PHP Compiler is Called HipHop and it uses HHVM (Hiphop virtual machine), Facebook developed it after excessive CPU usage
You can consider looking at https://jersey.java.net/ As a web container you can use anything like Tomcat. I have used Google App Engine in the past.
To get started quickly with Java look into http://dropwizard.io/, using less EE frameworks and more standard Java.
Has Jersey for REST and is supereasy to run.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
Our company is starting the development of a client-server application and a discussion is going on about which technologies should be used.
For the client (GUI) side we tend to QT and C++. For the server side, we have been advised to use Java and indeed it looks like it is one of the languages being used most for server development.
Can anyone elaborate on the advantages offered by Java for server side development and why adopting it should make our life as developers easier and/or allow us to reach better results than if we used, let´s say, .NET or even C++?
Thanks in advance.
Some advantages:
Run compiled code across platforms.
Managed memory (garbage collection).
Hude wealth of excellent open-source libaries.
Large developer market.
Easy migration for C++ developers.
Some disadvantages:
Aging language — has not kept up with language advances IMO (e.g. adding functional facilities).
Future uncertain after Oracle aquistion (will become clearer with time).
Low level programming difficult.
You may want to look also at other languages which run on the JVM, such as Scala and Groovy, at .NET (it can run on Linux et al using Mono) and even the D language, which provides a C++ like, compiled to native, language with modern features such as garbage collection (optional), code contracts, lambdas etc. These languages provide many of the benefits of Java over C/C++ but have also taken the progression a bit further or in different directions.
Apart from platform independence, the main advantage of server-side Java development is the wide selection of mature libraries and standardized frameworks. However, the main focus here is on web development.
For a C++ client, Java could still be beneficial if you use REST as protocol between client and server (JAX-RS is pretty nice). Otherwise, it depends very much on your application domain and whether there are Java libraries that could help you in that regard.
Let's put it this way... it's not which server-side language is better and what not, it is what's available in your company that you can leverage of and make good use of it. When you work in a big corporation, sometimes you cannot just introduce "yet another language"... it doesn't work that way. :)
Further, every language has its pros and cons. You can almost argue the pros/cons in both way depending on how biased or open-minded you are. You can choose RoR and all that bleeding age technologies, but if your team members are not comfortable in dealing a brand new language, how exactly are you going to maintain the project in long run? I mean, if your team is familiar with PHP, I don't see anything wrong using that compared to Java, .NET, etc.
Your customers don't care the underlying implementation as long as it works.
Java advantages:
- mature
- good to excellent backward compatibility
- wide range of available frameworks for almost any problem
- robust - garbage collection, APIs as java.util.concurrent
- great tools to manage code quality, good IDEs etc.
- very good performance
- support for scripting
disadvantages:
- sometimes too many frameworks for the same thing
- not all the frameworks have as good quality of code as you need
- looks easier than really it is
You have many options in server side. Since you have the control over server side you can basically use anything. Using .NET forces you to use Windows Server so i will prefer a framework that can run on any operating system and is portable.
Java was the right answer 5-10 years ago. Because it had portability, and can work on any system. But these days developers look for languages/frameworks that are easier to use, maintain and code. I will vote on Python these days for server side development because of this, its fast it easier to read and maintain code wise, and it has many open source projects/libraries that you can use, even Google is favoring python over Java(GAE had python support first, then support for Java came). You can use django on python for web development and twisted for writing a server that uses TCP to communicate.
There are several issues you need taken in accout to select the language:
which are the languages which know your team best / good enougth
which are the languages which know the team thet must maintain the server
are there the right frameworks with an quality that makes you want to use them
will the code be maintainable as long as the server is in production
how fast will be the development -- the importent thing here is not the time you spend to type the code - more important is the time that you need until the product works stable enougth to use it for production without reasonable bugs
communication with other systems - if every system you need to communicate with is an .net - that it would be wise to build the new system in .net too
are there any constraints (must use this server, open source policy of your company, ...)
cost of licences, ...
...
At least the descicion to use a specific language for an project with a reasonable size, is always the question of cost. But not only the cost to build the system, also the cost to maintain it. - The points mentioned above are all cost related: for example: if you do not knwo the language you are slower (-> $), if the system can not be maintained, it must be rebuiled (-> $), if there are not the right libs, you need to implemnt it by your own (-> $), if the language you picked make it easy for bugs to hide, you need a long time until the system can go in production (-> $)
In MHO, the advantages of Java are: the wide spread knowlege (this is for .net too), a huge amount of realy mature open source framworks (this is the point for Java against .net), and the usage of a strong typed system and a compiler wich result in less bugs is a long term advantage of Java and .net over every not strong typed scripting language)
One must have for all languages you use on a Server is an Garbage collection!
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I'm planning on writing a simple web application that will be used by lots of users (as complicated as a simple bookmarking app) and I'm trying to decide which framework/language to use.
I'm very experienced with Spring/Hibernate and Java in general but new to both Grails and RoR (and Spring ROO).
The only reason I'm considering RoR is because Java hosting is MUCH more expensive than RoR hosting (which is supported by almost any hosting vendor for 5$ per month).
Assuming the price wasn't an issue, which one of the frameworks/languages mentioned above would you recommend for a Java developer (who knows how to configure Spring/Hibernate etc.)?
I'm afraid that by using RoR I won't be able to easily support many users who are using the website at the same time.
thanks
First you can have a look to these related questions :
Rails or Grails?
Learning Ruby on Rails any good for Grails?
https://stackoverflow.com/questions/1283935/what-technology-asp-php-joomla-rails-grails-for-a-website-from-scratch
Is Grails worth it?
Is Grails (now) worth it?
Now, I will try to answer you according to your requirements you have communicated and the information I have gathered from the internet and my own experience.
Ruby on Rails
I do not advice you to start with RoR because you are a Java developer and you will have to learn a new language (Ruby) and a new environment (Rails). The hosting issue is not a real issue. You can have a VPS hosting plan for $10 (www.enjoyvps.com) perfectly suited for small grails app. If you application needs more memory, you might need to add another 10 Bucks.
If you hosting is really THE critical factor, go with Python/Django or PHP/Kohanna (a very good MVC framework). Otherwise, according to your background, Grails is more suited for you than Rails.
Grails
Few months ago, I had the same dilemma as yours and I decided to have my way with Grails. Why?
Because it's cool !! I mean, community is very helpful and dynamic, Groovy is a pleasure to develop with (be careful : thereafter , there are good chances that you will loath Java). Also, it is a state-of-the-art framework based on very-well established technologies (Hibernate, Spring, Java) and hence, it can improve considerably your market value as a developer. Grails is my favorite
Spring Roo
Roo is Grails for Java. So if you don't want to learn Groovy and if you need pure Java application (that will always run faster than a Groovy-based app), go with it. The community is smaller than Grails but the project is supported by SpringSource who is quite active in the community. I think that if you want to go as fast as possible, this is the solution for you.
Spring Application
You should choose this option only if you don't like Spring Roo integrated technologies (Hibernate, JSP, Maven...) and you want Java absolutely. Otherwise, there is no interest (except for educational purposes) of spending hours of configuration and tuning when you can build sophisticated enterprise applications in a best-practice manner within minutes (with Rails, Roo or Grails).
Each of the options above will provide you enough performance for the application you want to build. A lot depends on best practices for website applications like good architecture design, correct usage of caching strategies and requests optimization...
My Bottom Line
If you have some time to spend for learning new concepts (Groovy, RAD...), go with Grails. If not, go with Roo. Forget about Spring App and Rails.
If hosting is THE issue, so go with Python/Django. You can deploy on GAE, it's free scalable, performant and you will deal with the same concepts as Rails or Grails.
I don't understand the obsession with runtime performance. Given your scenario your primary focus should be on your performance, as in your ability to get things done with the chosen technology.
You will get more done in a given period of time with Groovy than with Java any day. Often one line of Groovy code will equate to 10 lines of Java code etc etc
Very rarely will byte code execution time be your performance issue, most often its...
Bad algorithm implementation or design.
Bad DB design and / or queries
Taking to long to get things done and then having all sorts of commercial relationship issues because of it.
With web applications you are usually not performing lots of long running CPU bound operations. Most of your request / response time is spent in the wire (internet routing etc) and in the DB (executing queries).
Choose a technology that takes a load off your mind and one that frees you from writing mountains of boiler plate code, so that you can rather concentrate on designing and implementing good algorithms, DB's and queries etc etc
Id personally choose Grails.
I chose Roo over Grails and Rails at my company. Runtime performance, easy debugging, nice Eclipse integration (it's plain old Java after all), no "black magic" happening at runtime. In fact, there is no Roo runtime library needed to run a Roo app, just the library dependencies like Hibernate and AspectJ. You can look at the code that is generated so you know exactly what is going on. Also a biggie for me is that Google has chosen Roo as the preferred tool for creating GWT apps going forward and they are throwing their support behind it. I have been extremely impressed with Roo thus far, I think it will be the tool of choice in the near future.
Performance issues with RoR are going to be caused more by the $5 hosting plan than by the choice of language and framework. Consider Heroku for your hosting, as you can start cheap / free, and then scale up as needed.
For a simple bookmark app, however, Rails is probably overkill. Take a look at the Sinatra framework as well, as you weigh your options.
Have you looked at Gaelyk? http://gaelyk.appspot.com/
It's a lightweight Groovy framework for Google App Engine
I know this post is a bit old. It's 2012 now and Spring Roo just released version 1.2.2 3 months back.
I'm a Java developer & has just started an ambitious project that will see me launching a web application for wide adoption. I'm going through Spring Roo & is getting my hands dirty. My first impressions are nice, but when I read over the Internet about it being a good framework for fast prototyping and only for developing CRUD operations etc. I feel a bit demotivated to use it.
But I personally think that Spring Roo (SP) gets my project started with best practices already implemented with the choice of files created which I can use as template for custom use. Obviously, I'm not afraid to code. We will always have to code ourselves, I don't want any "magic".
I also tried to look around the RoR scene and is easily intimidated by the learning curve involved.
I don't see much traction in the Spring Roo community. Is there any specific reason for it?
Also are there any better alternatives? I'm a bit confused over my decision of finalizing a framework that is both robust and scalable in future. I don't want to be a position where Twitter is now where 2 years worth of RoR code makes them re-think their choice of RoR. Is Spring Roo the best bet for me?
I'm trying to understand trends of the languages. This might be not a "real programming question", but i hope people will correct me promptly.
Currently there are two languages/trends/technologies that i'm interested in: Java and .NET. These are two worlds.
There's an opinion that:
1. Java is most often used in connection with Oracle for ERP/CRM/Banking systems
2. .NET is most often used in connection with MsSQL (captain obvious) for Inter-company communication software (simple ERP/CRMs), websites, portals.
I want you to notice that i emphasized most often not occasionally. Java is truly used for websites. And .NET might be used for complex CRMs as well. It's not a holywar or an attempt to offend .net or java. Simple curiosity. What are you using your tool for? What are the related technologies that are coming along with java/.net. Although the question is pretty abstract, please try to be concrete when answer. Hope you will enjoy reading the answers as well.
For rich desktop apps .NET (C# usually) wins hands down. Java has been playing catchup for a long time with GUIs and missed the boat with the early releases of awt/swing and poor IDE designer support.
I would say Java is better for server side apps, because of the wide array of high quality third party libraries. Java also integrates with pretty much any DB (JDBC drivers abound) and there's plenty of libs out there to help with database interaction (spring, hibernate, ibatis etc).
Currently I'm using both, Java server/back-end with a C# front-end. Once you jump the hurdle of getting the two to talk to each other you get the benefit of the languages/frameworks working to their strengths.
At work we're building a family of web sites and a bunch of windows services. Whereas my personal projects include a package manager and database migration framework, both of which are kind of "for-developers" tools.
We use mostly Java in a bank. Netbanking module (servlets), and internal banking applications are written in Java (Swing). Database is IBM's DB2. Servers are all Ubuntu 9.
Some legacy apps are written in Visual Basic.
It's not clear what do you want to get eventually from your question because the answer for the question 'what language should I learn' may be opposite to the answer to 'what platform/technology should I choose for my company'.
My vision is that either java or .net are mainstream platforms, i.e. there are a lot of technologies, ready-to-use products and developers for both of them. It's possible to use both of them for wide range of tasks - starting from GUI finishing complex server-side applications.
About the differences - I see them as follows (note that I'm java guy and may not be aware about many .net benefits):
java runtime has support for many platform, .net is for windows and linux (with restrictions - see Mono project);
java applications are compiled by jit-compiler and require some time to 'warm up' in order to get a max performance; .net applications are compiled to the machine instructions at first launch (afaik);
java has more products and
technologies (note that many of them
are ported to .net as well);
c# as a programming language is evolved more rapidly than java (java spends a lot of effort to backward compatibility);
java is less expensive for the companies - there are good free IDEs, profilers, servers and it can be used with free *nix operational systems;
java offers a choice between various vendors - web- and app-servers, IDEs, ORM etc;
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I come from a Java and PHP background to build web applications.
Has anyone used Lua before to build a web applications?
Question: If so, what are the pro's & con's of using Lua versus PHP or Java for a web application? (e.g. web server support, performance, code maintenance, etc).
As others mentioned Lua is "do it yourself" kind of environment. Also it is very fast and quite memory efficient compared to Perl/PHP/Python/Ruby especially if you are using LuaJIT. And it is very easy to integrate with C/C++ code. Usually these points are irrelevant for a typical web application where performance is usually restricted by database. Also where you don't really care about C/C++ integration and where you don't really want to do things yourself but rather you want to build on top of existing frameworks. For this reason I don't think Lua is a good fit for a typical web applications. At the same time there are some niche applications where Lua shines. For example our company specializes at building high performance HTTP servers used for adserving. So what we are using is our own HTTP server written from scratch in C++ which integrates Lua as a scripting language for our business logic. This allows us to do customization of the business logic in Lua quickly compared to what we had to do if it was pure C++. At the same time we always have an option to do performance critical parts in C++. If we were using any other scripting language we are positive it would be slower, it would use more memory and generally would be harder to integrate with C++ code. At the same time we don't really care much about loss of extensive library support were we using other scripting languages as the domain we are working in is quite specialized so usually those libraries are irrelevant for it anyway.
I am using Lua right now to build a web application! Whatever happened to software developers that "do it yourself" got a bad name - too lazy, weaned on bloated megabytes of support libraries, or what? In reality, as others have pointed out, there is decent support, just not on the scale of Python, say. Lua is by far the fastest scripting language (especially with www.luajit.org around), and much, much cleaner as a language design than any other in its league out there. This is vital for long-term maintenance.
For those using lighttpd as their webserver (me included), the added bonus is that the full power of Lua is available for mod_magnet scripts, useful for synchronous request handling/rewriting-on-steroids.
I have programmed a few websites with Lua. The first one was a raid planner for my World of Warcraft guild (that's often how you start programming in Lua...). I used mod_lua with an alpha version of Apache 2.4 for that. Two others were small contests sites for customers, developed with WSAPI, Nginx, Spawn-fcgi and Orbit. This setup is damn fast, faster than mod_lua and anything else I have seen. The pages would display instantly as if they were in cache ! The experience was very pleasant and Lua makes you quickly productive. But you better be well organized. Lua is missing a lot of batteries when it comes to web development, so you often have to implement your own and it can become messy. So I suggest you plan what you will need before you start. I used my own Lua "ORM" with MySQL and a forked version of Lua Pages for the templates. Have a look here if you want to give Lua+Wsapi+Nginx a try : http://mascarenhas.github.com/2009/10/24/wsapi-nginx-fcgi.html
I think it is the best setup.
There are quite a few projects using Lua for web development.
For example, Nanoki, an HTTP and wiki engine developed in pure Lua.
Or Sputnik, which is build on top of Kepler.
That said, Lua is very much a, hmmm, "do it yourself" kind of environment.
Pros: fast, small, elegant, easy to make your own binding to a C library.
Cons: sometimes you have to write your own libraries for things you would get for free in Python.
http://luanova.org/ has a number of good posts on web development in Lua.
We use lua with great success for our backend implementation. You can also have a look at JUCI webgui for embedded devices. It uses lua for backend implementation. You can have a look at how code interacts with lua/C backend: https://github.com/mkschreder/juci
Note however that this backend is a pure jsonrpc backend so it does not create any html like php or cgi pages. Lua is perfect if all you do is handle and respond to json requests. You can also have main application in php and use lua to write the application on the backend. Or main application completely in javascript.
I think that if you are going to use lua in places where you want to generate html then you will find it lacking many features, but if you limit it to purely functional backend implementation then you will find that it works very well.
lighttpd and mod_magnet are really great platform, but I recommend that you first take a look at Kepler Project. It's a quite great beginning.
You can take your PHP/Java background useful.