thanks for reading this and helping.
I am comp sci intern, I mostly code winform applications using C# .net framework on windows. Recently, for job requirement, I have to make an application on Mac OS, which could be opened by just one doubleclicking the application. No script, command line or anything.
I research a bit about MONO and I successfully wrote an applescript application to do shell script and mono the Winform application. It does the works just like it does on windows, but the thing is it does the works very slowly on Mac. Therefore, I look more into Xamarin.Mac, and started learning to make a cocoa application.
However, here comes the question. If in the cocoa application, I still use the .net framework stuffs like List, Linq, System.IO like File.WriteAllLines instead of native cocoa stuff like NSMutableArray, NSFileManager, would it be slow just like MONO the Winform application?
Hypothetically, if I wrote pure objective-c in Xamarin comparing pure .net stuff to do the same job, would the .net one run slower than the objective-c one?
MonoMac was the framework (open source) to develop desktop OS X applications (32 bit). But it is now obsolete in favor of the commercial Xamarin.Mac platform (32 bit/64 bit).
If you are still a student, please get academic licenses from Xamarin,
http://blog.xamarin.com/xamarin-for-students/
The difficulty is that whether you can later find an employer that embraces Xamarin platforms. Good luck.
Any time you introduce an abstraction layer into your app it's going to be slower than native code. Whether or not that's a trade off you're comfortable with is up to you.
Related
I have to design a simple application to communication via serial ports with a machine and then record the responses in a excel file. The application needs to be able to work with window XP all the way up till windows 10. Is WPF .net 6.0 a good choice?
From what I see you will need to go back all the way to .NET Framework 4, if you really need to support XP. I have however never tested this, and you might still get it to work. If you only need Windows 7 and upwards, .NET 6 seems fine. The supported OS Versions of .NET Core can be found on GitHub. The supported Framework versions for each OS can be found in Microsofts Documentation.
Your specific needs seem to be serial port communication and excel file creation, both are compatible with .NET Framework 4.
You don't explain why you need a GUI, WPF will be a problem, but WinForms should be fine.
OP:
Will WPF .Net 6.0 Applications work on Windows 7 or Windows XP?
TL;DR: hardware-based Windows Desktop acceleration is not available on XP so there is no point trying to deploy WPF on it irrespective of what version of .NET you are trying to use
Windows XP support has ended
OP:
...needs to be able to work with window XP all the way up till...
Unless you are working for a major government body, support for Windows XP has ended, so no.
WPF requires hardware acceleration
Also, given that you are wanting to create a WPF app, a technology released late 2006, one of the biggest selling points of WPF historically was that it was one of the first MS GUI frameworks to support hardware-acceleration (apps were blitted to the screen in a single operation via DirectX) - something that didn't appear in the Windows Desktop until Windows Vista in early 2007 (remember suddenly people were buying 3D cards just to run Windows).
Unfortunately, Windows XP, an operating system released in 2001 predates hardware acceleration in the Windows Desktop, so even if you managed to deploy a WPF app on XP, it is unlikely that it will be hardware-accelerated and will run poorly.
Additionally, WPF was originally released in .NET Framework 3 and required one of Windows Vista, Windows Server 2008 R2 SP1+.
What's the minimum for WPF?
You can use WPF on Windows Vista+ with .NET Framework 3.0+ safe in the knowledge that it will benefit from hardware-acceleration.
What about the .NET 5+ road?
Given that WPF in .NET 5+ is Windows-only anyway (thus kinda defeating the mandate of cross-platform that is .NET Core/5+) and the fact that more and more Windows-specific technologies are either being dropped or not ported in the first place to .NET 5+, you really need to ask yourself:
Question
If I know my app is only for Windows and I don't care about cross-platform, should I start to use .NET 5+?
...to which the answer is a big "Be careful before signing up!".
The following technologies are not available in .NET 5+:
App Domains
CAS (including Security Transparency)
GAC
...which is a real shame since there are quite a few legacy WPF (and WinForms for that matter) Smart Client projects out there that require these technologies for bullet-proof extensivity and sandboxing of 3rd party plug-ins.
To me WPF .NET 5+ is a bit of an unknown; it is unclear if it is hardware-accelerated and even if it is, do you want to risk such support being dropped in the future (in exactly the same way AppDomain.CreateDomain was dropped in .NET 6).
My advice would be to stick with .NET Framework 3.0+ (.NET Framework 4.x+ would be better) if the intent is to create hardware-accelerated WPF apps.
I am developing a Map editing software that works in correlation with my Android game engine. I currently have the software nearly complete written in c# using visual studios. You can view the required functionality and current program via this video Here.
I realize after already developing the map editor that visual studios was not the best choice for me. I need the engine to run on OSX AND Windows (linux would be nice too). What I am asking from you is what are some decent options for building a cross platform GUI. I have done some research on QT however I am not a huge fan of C++. I would prefer to write in C, C#, Java, or possibly a scripting language.
Here is a list of things I would like to see:
Cross platform ( OSX and Windows are a must)
Visual Form builder (I like QTs and Visual Studios...also not that picky)
GUI is clean (Design is big for me, so I dont want the old windows 2000 look)
Not C++
I understand Java in itself is cross platform; however, it seems clunky to me. Thats more of a last resort.
Thanks in advance for your help!
The mono framework is an open source version of the dot net framework that works on Linux and Mac
http://www.mono-project.com/Main_Page
I have .net c# background(don't mind to learn new language to get the things right). Right now i want to make some small applications for Iphone/Android phones.Basically, i will show some graphs with data retrieved through my webservice.
Can anyone tell me which developing tool should i use to create those small apps quickly?
I don't have any experience with Flash.And i just know that Flash builder 4.5 can convert Flash applications to Iphone/Android. However, i don't feel like that it is a native way to build Iphone/Android app
But if you advise that, i might go that way.
thank you
Xamarin has products that allows you to use C# (and your existing skills) for both iOS (iPhone / iPad) and Android devices : MonoTouch and Mono for Android.
disclaimer: I work for Xamarin
You might want to use frameworks that help build apps for multiple platforms with the need to know native programming languages. PhoneGap is one of these popular frameworks.
You can use C# to create a WCF service. There are a few different libraries to develop Android applications. If you want to work with C#, you can check out Mono for Android.
http://docs.xamarin.com/android
From my knowledge, however, Java is the preferred language to develop Android application. Eclipse has a great plugin which integrates with the Android SDK / Emulator.
We want to write a client for an online service which should be available on as many platforms as possible. This question is about what programming language and framework we should use to create this client.
These platforms are required: Linux, Mac, Windows, iOS (iPhone, iPod, iPad) and Android. The more the better.
For the mobile platforms there is Titanium Mobile. I haven't tried this thing yet, the website says you can develop for both iOS and Android using web skills such as Javascript. I don't know yet if you can deploy for both platforms using the SAME code. It would be great!
There is also Titanium Desktop but I don't like the idea that the complete source code is shared with the final application. Titanium does this for Mobile too but it isn't that easy to modify an app loaded via App Store.
So, what other way is there to create an application which runs on at least the three major desktop platforms? I thought c# with mono would be the way to go but I just realized that you need to use mono with MonoMac in order to publish it on the Mac App Store and use things like Growl. And since MonoMac is naturally only available for Macs, it's again not possible to deploy the mono app on all platforms without rewriting it for at least the Mac. And it would be nice if the app looks "native" on all platforms. Gtk# just does not look good on a Mac. It's "okay" on Windows and great on Linux.
I know we could use Objective-C for iOS and Mac, Java for Android, C#.net for Windows and C#.mono for Linux but the main point is that we don't want to write the same app in a lot of different languages. That would make development and maintenance really hard.
And we prefer languages with C-style syntax which are much easier to learn for us PHP web developers. Btw: We dislike Air and I'm not sure about Java since I never used it but it also does not look "native" and it feels kinda slow.
Edit:
Just a note: It wouldn't be a problem to create an own form for each platform if at least the remaining code is the same. Is it possible to use MonoMac, Gtk# and Win Forums in the same C# application? And I'd prefer C# over C++ as I have no skills in C++, so I first need to check how hard it is to write with Qt.
Another note: We don't plan to spend much money and because we need to pay Apples Developer Programs we want to use free or cheap technology. Preferable Open Source.
Just use C# for all of the above.
The mono project will cover Mac and Linux, with monodroid your android requirements are covered and monotouch will take care of iPod/iPad/iPhone.
In regards to UI - mono has full support for the System.Windows.Forms namespace, so you don't have to use GTK# if you don't want to.
I don't think I need to mention windows support ;)
If you really want to support all those platforms from a single application, your best bet will be to create a web application. With HTML5, such an application can even be cached on the device and used when no connection is available. Also, that strategy would make it feasible to customize the UI based on the device running the app.
You will not have good luck if you set out to build a single native app that runs on Android and iOS, let alone all the other platforms you mentioned. The reason that they're different platforms rather than the same is that they're, well, different. They have different capabilities, run on different hardware, are built with different languages, employ different application models with different user interfaces, and have audiences with different expectations.
The best solution I've come across over the years is Qt SDK.
Great support for all major platforms, Symbian, OS X, Linux flavors, Windows, Windows CE (mobile), Android and iOS partial support and etc.
Its base is C++ but bindings for almost every language (like C#) is available. Lots of help and support is also covered.
The core Qt libs are very fast and extensive, And the whole KDE desktop (of Linux) is done with it. Famous software like VLC and VirtualBox are done in Qt.
Another relatively new way of doing cross-platform development is to use the open source Eto.Forms, which allows you to have one UI codebase target each platform's native toolkit. It is a UI abstraction layer that can target GTK#, MonoMac/OSX, WinForms, and WPF.
There is also an iOS port in the works.
Java sounds like the best fit. It is cross-platform, easy to understand, has a huge userbase and android is based on it.
Depending if you need an offline interaction mode, it sounds like you should develop a web application. You can develop a mobile version and a desktop version and thus support all the of the above platforms. Look at youtube's application for Iphone, it retains the same functionality as the the iphone app but is purely html. Furthermore, html5 capable browsers could also have the ability to run offline.
Crazy as it sounds, check out Flash/Flex - it is cross platform, code once, run everywhere ,now compiles down to native code on e.g. Android and iOS and the 10.1 player is shipping all over. I had to solve exactly this problem and when Flash Builder Burrito catered for mobile after working with it for a while I have switching from C#/Flash hybrid to Flash only for clients. (Our backend is C#/Node/C++, etc).
Depending on your timelines and needs it is something look into.
Some random links to peruse:
Blog post about performance and video to single app multi device
Developing flash and flex applications
I'm thinking of developing a desktop app in C#. Although windows will be my main target, later I'll try and run the app in MacOS X and linux. Can I do this today, in a simple way?
I'm aware of the mono project, but it is not clear to me if I can do this in a simple way.
Also, what is the relation between WPF and Silverlight? AFAIK Silverlight follows a plugin model much like Flash or Java. Can I develop my desktop app with Silverlight and deploy it on windows, linux and os x without much changes?
Any pointers will be greatly appreciated.
The Mono project does not support .Net 3 and WPF yet, and it will probably been some time before that happens.
Silverlight might be sufficient for your needs.
As of Silverlight 3.0 you can run Silverlight outside the browser, even create a shortcut to it on the desktop.
Last I heard, the Mono project has no plans to implement WPF, however they are working on other .NET 3.5 features, especially LINQ and ASP.NET MVC. The problem with implementing WPF in Mono (beyond the size and complexity of the API) is that on Windows it uses DirectX for rendering, so an implementation for Mono would need to use OpenGL. Definitely not a trivial undertaking.
WPF is used to build desktop applications for Windows only. Currently no other platforms are supported. If cross-platform support is a must, you can create a browser-based application and use Silverlight. Silverlight runs applications in the browser, though, so you cannot make a "desktop" application using that.
Mono is working hard to make sure that Silverlight runs cross platform (as mentioned on one of the stack overflow podcasts). So that seems to be a good way to go.