When comparing C# vs Xtend, the Slant community recommends C# for most people. In the question“What are the best alternatives to Java for Android development?”C# is ranked 7th while Xtend is ranked 11th. The most important reason people chose C# is:

C# runs on top of the .NET framework, which provides many libraries containing classes used for common tasks such as connecting to the Internet, displaying a window or editing files. Unlike many other languages, you don't have to pick between a handful of libraries for every small task you want to do.

Pros

Pro

.NET is a great toolbox

C# runs on top of the .NET framework, which provides many libraries containing classes used for common tasks such as connecting to the Internet, displaying a window or editing files. Unlike many other languages, you don't have to pick between a handful of libraries for every small task you want to do.

Pro

Awesome IDE for Windows

On Windows, Visual Studio is the recommended C# IDE. It provides a very flexible GUI that you can rearrange the way you want and many useful features such as refactorings (rename a variable, extract some code into a method, ...) and code formatting (you can pick exactly how you want the code to be formatted).

Visual Studio also highlights your errors when you compile, making your debug sessions more efficient since you don't have to run the code to see the mistakes. There's also a powerful debugger that allows you to execute the code step-by-step and even change what part of the code will be executed next. In addition to giving you all the line-by-line information you'll need in a hassle-free manner, Visual Studio has stuff you can click on in the errors window that will take you to the documentation for that error, saving you several minutes of web searching.

In addition to all of this, Visual Studio has an intuitive, intelligent, and helpful graphical user interface designer that generates code for you (the best of WYSIWYG, in my opinion), which is helpful for new programmers. Being able to create a fantastic-looking UI with one's mouse and then optionally tweak with code helps make programming fun for beginner developers.

Visual Studio also has the best code completion --Intellisense is every bit as intelligent as the name says it is. It, as well as VS's parameter hinting, is context-, type-, user-, and position-sensitive, and displays relevant completions in a perfectly convenient yet understandable order. This feature allows a new programmer to answer the questions "What does this do?" and "How do I use it?" right then and there rather than having to switch to a browser to read through extensive documentation. This allows the programmer to satisfy their curiosity before it is snuffed out by several minutes of struggling through exhaustive documentation.

And for the more adventurous and text-ready developer, Microsoft does the best job of ensuring that everything, from interfaces and wildcard types down to Console.WriteLine("") and the + operator, is well-documented and easy to understand, with relevant and well-explained usage examples that manage to be bite-size yet complete, simple yet truly helpful. The reference site is easy to navigate, well-organized, clean and uncluttered, up-to-date, and fresh and enjoyable to look at, and every page is well-written with consideration for readers who are not C# experts yet want to read about changing the console background color.

The best part? It's free! Visual C# Express contains all of the features described above, at zero cost. If you are a student, you can probably get Visual Studio Professional from your university, which also includes tools for unit testing and supports plugins.

Pro

Incredibly Well-Engineered Language

Where other languages invoke the feeling of being a product of organic growth over time, C# just feels like an incredibly well-designed language where everything has its purpose and almost nothing is non-essential.

Pro

Supports some functional features

C# is primarily object-oriented, but it also supports some features typically found in functional languages such as lambdas, delegates and anonymous classes. Methods can be treated like any other object, and the Linq query system operates on monads with lazy evaluation (though it hides this with a lot of syntactic sugar).

You don't need to use these features to code in C#, though, so you can start with OOP and then learn about them.

Pro

Great introduction to object-oriented programming

Object-oriented programming is the most widely-used paradigm. C# offers support for common OOP features such as classes, methods and fields, plus some features not found in competing languages like properties, events and static classes.

C# code is much more readable thanks to the syntactic sugar it offers. You can truly concentrate on your code, not on the way it's implemented.

Pro

Best language for Windows programs

C# is clearly the best choice for Windows programs. The .NET framework contains everything you need to build great-looking apps, without having to learn the confusing Win32 API or download a ton of external libraries. C# can also be used to build Windows 8's "modern" apps.

Very high demand in the industry.

Pro

Supported on many platforms

If you want to create a cross-platform application, you can share most of the code and write one GUI for each platform.

Pro

Can mix high and low level programming

You can code at the high level without worrying about pointers and memory management, but if you so choose you can switch to lower level programming with direct memory management and pointer manipulation (though you need to compile to specifically allow this).

Pro

With ASP CORE a good language to learn

With CORE you are no longer just limited to Windows, so a language worth learning.

Pro

Great language for Unity game engine

Unity provides a selection of programming languages depending on preference or knowledge - C#, JS, Boo and UnityScript. C# is arguably the most powerful with better syntax and stronger language structure. It allows using script files without attaching them to any game object (classes, methods inside unattached scripts that can be used at any time). There are more tutorials and information for C# than UnityScript and Visual Studio can be used to code for unity in C#. Additionally, learning C# allows using it outside of Unity as well unlike UnityScript.

Pro

.NET truly universal

With .NET core it is a truly universal programming language which support desktop apps (Windows), Mobile apps (Xamarin), Web Apps (ASP.Core MVC). Also is perfectly fit to serverless programming for micro services. Soon it will be also support Web assembly (Blazor).

Pro

Ruby-like syntactic conveniences

Lambdas are written like Smalltalk's blocks. If it's the last argument, it can go after the parentheses like Ruby's blocks. Parentheses on method calls are optional.

Pro

Type inference

It uses Java's static type system, but you don't have to declare the type of everything all the time, since the Xtend compiler can usually figure it out. This also dramatically cuts down on Java's infamous verbosity.

Pro

Code runs just as fast as Java

Because Xtend relies heavily on JDK and Android classes, it runs just as fast as native Java code.

Pro

Easy to switch back to Java

Xtend is a low-risk option. Because it compiles to human-readable Java, if you decide you don't like it for your project, you can just switch back to Java without losing your work.

Pro

Extend even library classes with new methods

This is where it gets its name. You can open classes and add new methods, kind of like Ruby. (Of course this has to be compiled to Java, so really it lives in a kind of helper class.)

Pro

Succint

Uses functional features ,which are very concise and idiomatic. Plus it has annotations, which cuts down on the Java boilerplate.

Pro

Better defaults than Java

Methods are public if you don't specify, and fields are private. Locals declared with val in Xtend are final in Java. This dramatically cuts down on Java's infamous verbosity.

Ad

Cons

Con

Dependecy on IDE

Most people learn and depend on VisualStudio to write C#. The result is people learn how to use an IDE and not the concepts or fundamentals of good programming. This isn't necessarily a knock on the language itself, but it is frustratingly difficult to do things in C# when not using VS.

Con

Too easy to write multithreading apps that are buggy

Other languages with multithreading push users towards safe constructs, like passing messages and immutable or synchronized containers. But in C# the data structures aren't synchronized by default, and it's too easy to just set a field and observe the result from another thread (until you compile with Release, and now you have a heisenbug).

Con

Complex syntax

Too many syntactic constructs to learn before it becomes usable.

Con

Often-used products in most C# development environments get expensive

The majority of the C# development community uses Microsoft products which are not all free and open-source. As you get into the enterprise level of some of these products and subscriptions, the expense is multiple factors of 10 greater.

While you can use a fully open-source and free C# environment, the community around that is much smaller. While this can be said for other languages as well, the majority of C# falls into the for-pay Microsoft realm.

Con

Lacks standard-library support for immutable data structures

Con

Difficult to configure in Android Studio

Con

Slower compilation

Unlike most JVM languages, Xtend compiles to Java rather than directly to JVM bytecode. So you have to compile everything four times for Android: from Xtend to Java, from Java to JVM bytecode (.class files), from .class to .dex bytecode, and then AOT compilation from .dex to native ARM upon installation. This can really slow down development and testing vs a more interactive language like Clojure.

Alternative Products

Each month, over 2.8 million people use Slant to find the best products and share their knowledge. Pick the tags you’re passionate about to get a personalized feed and begin contributing your knowledge.