ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
So I've been occasionally looking around for a while, and this question keeps rolling around in my head.
Where or what is the .net open source/Linux equivalent?
Mono doesn't count in my mind, as unless my admittedly very basic understanding of it is incorrect, it essentially is the .net framework.
Was/is Java supposed to be the contender? Is the fight already over? Maybe I've just been hanging with the wrong crowd, because all I ever hear is .net & c# -- and if I ask for an open source (or free) alternative, it's either Mono (which as I've already stated, doesn't count in my book), Java (which although I have next to no experience with, from what I've read will end up being a mix of components from different vendors, fairly complicated in comparison to .net, and probably not free), and then the last alternative is usually LAMP or some other common, similar stack -- which again is a viable alternative, but definitely a far cry from being equivalent or directly analogous to .net.
I'm a fairly inexperienced programmer, and so maybe my opinion is just ignorant, or misinformed, or misguided.
.net stands out to me though for it's singularity and cohesion -- and ease of use as well -- maybe the only way to get that is to have all the pieces coming from the same source (MS)
anyway, do I have it wrong? Am I simply ignorant of an open source platform/project that would be nearly directly equivalent to .net?
.net and C## are Windoze attempts at non-standard standards.
Your question faulty as regards Java as it assumes Java doesn't exist on Windoze even though it does. C has been on UNIX (and Linux as gcc) since inception because UNIX was written in C. C was extended to be object oriented with C++.
Other than Windoze I don't know of anyone using .net or C##.
UNIX/Linux have a plethora of tools for programming in various languanges and scripting languages. Have a look at shell scripting (bash/ksh/csh), as well as tools like Perl, Ruby, Python etc...
Which one or ones you use is a matter of preference for the most part.
Sun invented a language with a huge object library called Java. They then licensed this language to Microsoft to make its own implementation (Microsoft J++) on the condition that Microsoft didn't alter the language specification. Microsoft then produced its own version of MS J++ that altered the specification of the language. Sun sued over licence infringement, and eventually won, and Microsoft had to change the name of their language to C# to avoid trademark infringement.
.NET was a set of APIs developed by Microsoft to provide a set of APIs that were common across all of its own languages (at least Visual Basic and C#). I hear that it's quite popular in the Windows world.
After another anti-competition lawsuit, Microsoft was ordered to document its external interfaces and allow third party vendors access to them under “reasonable” licensing terms. Hence why they have to allow the Mono project to exist (at least until the term of their “sentence” runs out).
I'm not familiar with .NET myself, but as I understand it it's a framework for application development. The core components aren't tied to any one platform but most of the extensions are. And given Microsoft's reputation, it's probably just a number of functions bolted on to an existing code base.
You won't find anything fitting that description on Linux, but there are a number of similar packaged depending on what you want to do. I'd start by looking at Qt, which is a relatively extensive application framework written in C++ (and also has bindings for some other languages like Perl, making it quite a good simile for what I understand .net to be).
In away you raise two different issues with your question. C# and Visual Basic are programming languages, whilst .net is (essentially) a development environment.
From the language perspective neither Visual Basic or C# are perfect - no language is - nor can it be said to be dominant, for arguably the best insight into language popularity see the TIOBE Programming Community Index
From a development perspective, .net has provided an all in one box, but you can achieve the same if not better - technically - by looking at the tools that are available and selecting those that are right for the job in hand. For an overview of IDEs that are available see the sticky thread in this forum. The point with open source is that you have choice, invest some time in looking at the choice that is available and select the tools that work for you, and if it is the dotnot tools then fine but do yourself a favour and see what is available before locking yourself into what is essentially a tool-set with little flexibility.
As the others indicated, there is no alternative for dotnet. I also don't see a need for it but that is personal; I don't even see a need for OO programming.
Quote:
.net stands out to me though for it's singularity and cohesion -- and ease of use as well -- maybe the only way to get that is to have all the pieces coming from the same source (MS)
I've just started playing with dotnet (some MS studio express with C#) and don't consider it easy. Unless you refer to the IDE(s) but that is not a dotnet functionality.
I'm not quite sure what you mean by singularity and cohesion; can you elaborate on that. Someone gave me a book that works through VB and C# and there are a number of examples where you have to do different things to achieve the same, so I don't see the cohesion.
The fight isn't over, because there was never really a fight to begin with. .NET is MS attempt to have a write-once-run-anywhere language similar to Java, however, since MS only develops for MS platforms, that kinda defeats the point. In contrast, Java runs on may platforms... desktops, servers, phones, SIM cards, toasters... you name it.
Secondly, Java is an integral part of at least 2 high-end enterprise development stacks (usually comprising at least a few of WebSphere, RHEL, Oracle, JBoss) .NET, to date, is not, and doubtfully will ever be. MS SQL cannot be considered an Enterprise database, and IIS can definitely not be considered an Enterprise webserver.
So, as you can see.. there is only a race if there is more than one competitor.
C# is not a bad language, and Visual Studio is a good development environment, but that's kind of it. Sure, it's nice to get everything you need in one pretty package, but when you start to realise the limitations, you have to start again with a whole new system. This can be shortcut by skipping over the .NET thing, unless you actually want to be a .NET dev (and they are legion, believe me).
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.