Choosing a framework is not easy when you start reflecting on your future as a software developer, especially if you are a newbie. Mastering any programming language takes long hours and an effort you don’t want to waste. And it’s stressful to think that the wrong option might lead you to a job where you will have to change your knowledge base again.
Ok, let’s switch to the positive side. Since you are here, your options are narrowed down to these two: Java or .NET. That’s already a huge move forward. Both options are already a kind of win. Java and .NET are both well-established and are used for enterprise-level development. That means you might land a job at a huge company with lots of resources and opportunities.
Let’s take a quick look at the job market. As of April 2020, Monster.com lists more than 41k jobs for “Java Developer” and 8.5k for “.NET Developer.” According to Glassdoor, the average salary estimation for a Java developer (irrespective of level and location) is about USD 79k and USD 76.5k for an ASP.NET/C# developer.
Don’t be too fast with the conclusions though. Next, you might want to know which of the two is better for you personally and is more relevant to the future of technologies. Let’s have a closer look at both options.
Old-school Java
At the moment, Java is one of the most popular technologies worldwide. It often ranks first in various ratings, and this is probably the main reason developers stick to it. The technology was created in 1995.
It is relatively easy to learn, and there are many free training resources available. In addition, there is an enormous community that can help a newbie through the learning process. Java is suitable for almost every type of project: web applications, mobile apps, cloud computing, etc.
Java is a free technology, as is the Oracle JDK (Java Development Kit), or Oracle OpenJDK, that’s used to create software in Java. It also makes it possible to work with other programming languages, such as Kotlin, Groovy, or Scala, which would be relatively easy to learn as an addition. And as we have just pointed out, the job market is full of offers for Java developers from all over the planet. Sound good?
But hold on — there is a slippery slope under any ideal image. Some downsides include:
Licesing mess
Maybe you think that you will start your way in Java by writing a small "Hello World" program, right? Wrong. Today, before you actually can learn Java itself, you first need to understand licensing on this platform. Otherwise, you may appear in a situation when you at first have to pay Oracle a couple of thousands of dollars for the licensing before delivering your work to the customer. Therefore, first, carefully study what Oracle JDK is and how it differs from Oracle Open JDK. And how they both differ from the community-led AdoptOpenJDK. What is Binary Code License and how much rights you have with GPLv2+CPE license. Several official FAQs seem to explain the situation with licensing (one on Oracle’s site and another one on Java.com) but make it even more confusing. In addition, you can easily find a bunch of blog posts, queries on Quora (like "Is Java still free"), and even videos on this topic.
The question is: do you really want to deal with all this?
Legacy code
Many long-standing companies have something written in Java. Eventually, a young and passionate Java learner might end up on a job where they are working with an obsolete code instead of some new and prominent technology. For example, a library a company has been accumulating for 20 odd years might be too expensive and time-consuming to modernize.
High competition
In addition to the huge number of vacancies, there’s an even bigger number of candidates. That’s because virtually everyone who studies all the ratings sees Java in the top positions — and here we go! Another thousand newbie learners opt for Java.
A More Promising Option: the .NET Framework
There is another very popular free open-source developer platform that can serve you better — .NET. Here is why it may be more promising for you.
Source: https://devblogs.microsoft.com/dotnet/introducing-net-5/
1. Free, open, and cross-platform
Interestingly enough, about five to six years ago all the features mentioned in the previous section would have made Java a better option, as .NET was then fully controlled by Microsoft and ran only on Windows.
This situation has completely changed in the last few years.
The tables have turned, and now Java is becoming more closed off under Oracle guidance, while the approach of Microsoft is quite the opposite. .NET now is an open-source platform with no licensing costs. They claim freedom for developers as one of the platform’s core values. For the time being, Microsoft seems to practice what they preach.
The latest version of the .NET platform — .NET Core — is compatible with all the major operating systems: Windows, Linux, and iOS. There are basic .NET tools open for immediate use and lots of add-ons for building and editing apps, as well as third-party tools. Multiple libraries built specifically for .NET make the development process even more comfortable.
2. All application types
The .NET framework (and its Core edition in particular) allow you to develop almost any kind of application, be it an enterprise-level web app, desktop or mobile software, gaming project, or even an IoT service or an AI solution.
With the advent of the WebAssembly technology and Blazor framework, .NET can be used even for building client-side applications running in a browser — web apps where both client and server-side code is written in C#, thus eliminating the need to use JavaScript.
Source: https://dotnet.microsoft.com/learn/dotnet/what-is-dotnet
3. Quick progress and regular updates
The .NET framework has been constantly evolving throughout its 20-year history. But in the last four to five years, the pace of its progress has increased significantly.
Since the initial release of .NET Core back in 2016, we have received a major update almost once per year.
In November 2020 Microsoft plans to release another big update to the platform — .NET 5. It is supposed to take the best of the previous versions and become a united platform for all the development tasks. Moreover, at its annual conference in 2019 Microsoft introduced a roadmap for the .NET platform that gives a clear understanding of what to expect and when.
Source: https://devblogs.microsoft.com/dotnet/introducing-net-5/
4. Great performance
For years, the applications created either with Java or on .NET/C# had a similar level of performance. However, Microsoft and many third-party contributers have made some significant investments in the optimization of this aspect and continues to improve. For example, the ASP.NET Core web framework allows you to serve 7 million requests per second on a single server. And according to TechEmpower tests, ASP.NET Core is way ahead of any Java web framework.
Here's another good demonstration of the performance that can be achieved on the .NET platform — an example of a super-fast network driver written in different languages. The driver written in C# shows almost the same level of performance as C and Rust, slightly better than the Go language, and way ahead of all other high-level languages, including Java.
5. C# — modern and versatile
.NET was initially designed to support many programming languages. The most widely employed among them are C# (pronounced “see sharp”) and F# (which offers a more functional approach).
The most popular and loved is definitely C# — a general-purpose and object-oriented programming language. It is easy to learn and is widely used for all kinds of software development, from enterprise-level solutions to low-level IoT and gaming projects. It makes simple many features that are overly complicated in Java.
Despite its long history, C# keeps up with the times. A lot of features, such as LINQ queries, lambda expressions, asynchronous operations with async/await, and others were introduced in C# way ahead of other programming languages. Java still doesn’t have many features that were available in C# for years.
.NET Limitations
Just like we said about Java, there is always a downside to any ideal picture. With .NET, it is still not good enough for the client-side development. JavaScript is still considered the best option. The same goes for the ML (Machine Learning) and NLP (Natural Language Processing) applications. Here Python is number one.
Wrap Up
The choice between Java and .NET is one between two solid enterprise-level development options. Though Java now ranks number one in all the ratings, it is highly competitive in terms of the job market and slow in terms of relevant updates.
The other option — .NET — is an open-source object-oriented solution that can be used for developing all sorts of applications, and it has a clear roadmap for the future. In 2020 there will emerge .NET 5, an update that will unite all the best features of the previous .NET versions. This makes learning a well-structured, easy, and modern technology even more attractive.
Useful links:
-
Looking for a job as a .NET developer?
Use Jooble to post your CV and start getting job offers. -
Need to implement CRUD (create, read, update, delete) operations in your ASP.NET Core project and don't know where to start?
EasyData open-source library to the rescue! With EasyData you can get full CRUD functionality in just 10 minutes and with just a few lines of code. -
What to improve the user experience of your DB-related .NET application?
EasyQuery framework can help you to implement custom search, data-filtering, reporting, data exporting (to CSV, Excel, PDF), and many other tasks that commonly arise in data management solutions.