Ngôn ngữ là C# và nó open-source. Còn các thứ khác như .NET, WPF, WCF, SmartCard, EntityFramework … thì KHÔNG.
Tại sao lại có thể code trên Windows và vẫn chạy đc trên Linux?
Trên Linux phải sử dụng tới Mono, là một framework được viết giống hệt (gọi là support thì chính xác hơn) .NET Framework trên Windows. Để chạy được thì code phải đc build lại để tạo ra Linux runtime-compatible binary, phổ biến là format ELF-2. Tất nhiên là runtime binary của các hệ điều hành Windows và Linux là khác nhau rồi.
Ứng dụng WPF trên WIndows ko build và run được trên Linux với Mono?
Như đã nói ở trên, Mono “giả lập” mọi thứ giống hệt .NET framework, nhưng chỉ là Core API, và WPF là một bộ khác dựa trên .NET, và muốn có thì team dev của Mono phải viết code để support, chứ không tự dưng ở đâu ra mà có.
Mono’s current version is 4.0.0 (as of May 2015). This version provides the core API of the .NET Framework and support for Visual Basic.NET and C# versions 2.0, 3.0, and 4.0. LINQ to Objects, XML, and SQL are part of the distribution. C# 6.0 is now the default mode of operation for the C# compiler. Windows Forms 2.0 is also supported, but not actively developed, and as such its support on Mono is incomplete.[42] Version 4.0 is the first version that incorporates Microsoft original source code that was released by Microsoft as part of the .NET Core project.
Mono’s aim is to achieve full support for the features in .NET 4.5 except Windows Presentation Foundation (WPF) (which the Mono team do not plan to support due to the amount of work it would need),[42] Windows Workflow Foundation (WF), limited Windows Communication Foundation (WCF).[43] Some missing parts of the .NET Framework are under development in an experimental Mono subproject called Olive.[44]
The Mono project has also created a Visual Basic .NET compiler and a runtime designed for running VB.NET applications. It is currently being developed by Rolf Bjarne Kvinge.