I am looking for a UI framework that can help in providing end-user experience on different platforms using a single code-base. The platforms I am targeting includes Windows, Android (phone, tablet, tv, watch), Chromebook, Linux, macOS, iOS, iPadOS, tvOS, watchOS etc.
Does anyone have any suggestions on what all frameworks are present out there that can be tried ?
Thanks in advance !
You can take a look at AlterNET UI, it's a cross-platform .NET UI framework, primarily targeting desktop applications development.
It's still in the early betas, we're about to release beta 2 with WPF-like features like support for layouts, bindings, dependency properties, routed events and handling keyboard/mouse input.
These are other frameworks we looked at before coming up with own solution: JavaFX, Electron, Qt, AvaloniaUI and MAUI, you may read a bit more information here.
Related
We have an android application and want to recreate it for cross platform.
What are the facts for or against Xamarin native and forms?
The advantage of native would be, we could reuse all the xml-layouts while we have to recreate the iOS view in either XAML or XIB?
Is there anything what is really a blocker?
I'll comment based on Giorgi's answer with some actual insight and refer to the copied bullet points:
This is a resume of the experience i've gathered in the past 6 months:
Xamarin.Forms is best for:
Apps that require little platform-specific functionality
Wrong. With DI you can use any device functionality you could possibly want. Check out XLabs on GitHub if you doubt this.
Apps where code sharing is more important than custom UI
Kind of nonsense really. You can write your own renderers to represent controls of each platform in the way you want. I've also written more difficult renderers for custom controls such as a SideDrawer. In android i was done in 2 days, iOS about 2 weeks (android renderer was just a wrapper for the native control)
Developers comfortable with XAML
well yeah and anyone who enjoys convenient UI development. Mind you that there is a learning curve with xaml (which i already knew at the time i started from WPF development). But from what i have seen it's not that different from android.
Xamarin.iOS & Xamarin.Android are best for:
Apps with interactions that require native behavior
While hacking your solution up natively is certainly faster you can instead be done rather quick if purchase good controls / know a good native implementation and mirror it in C#, since the API in C# is very similar to the native one.
Apps that use many platform-specific APIs
Not sure why Xamarin is doing anti advertisement against forms. I had little trouble with it so far
Apps where custom UI is more important than
code sharing
Probably true, but it's also harder to keep UI functionality inline and you will need more manpower.
Things to consider about forms:
Forms seems to be stabilizing at the moment and i am sure Microsoft will do their best to turn it into a solid, reliable product (build issues have been a nightmare in the past sometimes, but it has gotten better over time)
The XAML for Xamarin is less developed compared to WPF XAML, though very similar. Recent nuget updates however provide mirrored functionality at an impressive rate. The vast majority of features you expect and love about XAML are present.
List performance is bad if you don't do your research (here). Performance increased loads in that area.
If i had to make the choice again i'd still go for forms. While there are sometimes things which seem flawed / bad you can usually figure out a clean fix somehow, while spending most of your time actually developing the app. (sometimes you will still find things which just make you frown why something isn't implemented, like the Margin property being implemented only just after microsoft purchased xamarin)
If you end up having a requirement of nested lists, make sure to have a look at embeded native controls in order to achieve the maximum performance - this was essential for a product i was working at. See this
According to Xamarin.Forms main page:
Xamarin.Forms is best for:
Apps that require little platform-specific functionality
Apps where code sharing is more important than custom UI
Developers comfortable with XAML
Xamarin.iOS & Xamarin.Android are best for:
Apps with interactions that require native behavior
Apps that use many platform-specific APIs
Apps where custom UI is more important than code sharing
Giorgis answer is the right one, but since you added some more constraints here are my thoughts.
I would analyze the current app. How much code is business logic which can be shared? How customized is the UI, should it look more native or more the same and how will it change in the future? If you plan to change a lot in UI and platforms should look similar, it might be easier to switch to forms.
Also consider if are you planning to develop for Windows Phone? If yes, you might save a lot of time just for this third platform.
After all there is one thing which I would also keep in mind. Developing in Xamarin.Forms does not mean, you cannot develop native. It is just an additional framework. In worst case you can still do everything natively.
Personally I use Xamarin.iOS & Xamarin.Android with MvvmCross, that way I can keep full control of the native UI on each platform while maximizing code reuse.
From Xamarin website (who knows better than them?):
Xamarin.Forms is best for:
Data entry apps
Prototypes and proofs-of-concept
Apps that require little platform-specific functionality
Apps where code sharing is more important than custom UI
[https://developer.xamarin.com/guides/xamarin-forms/]
With Xamarin.Forms at runtime, each page and its controls are mapped to platform-specific native user interface elements.
With Native Xamarin.Android and Xamarin.iOS apps leverage platform-specific hardware acceleration, and are compiled for native performance. This can’t be achieved with solutions that interpret code at runtime.
"Xamarin.iOS - The best way to build native iOS apps."
Ship native app bundles on the App Store. Our Ahead-of-Time (AOT) compiler compiles Xamarin.iOS apps directly to native ARM assembly
code, meaning your app is a native platform binary.
Access any iOS API. We bring 100% of Apple’s iOS SDK to C#, enhancing Objective-C APIs with stronger types and .NET naming
conventions so you feel right at home.
Call existing Objective-C code from C#. Use your existing Objective-C code, frameworks, and custom controls in your Xamarin app
using our automatic binding generator.
Build WatchKit apps. Use Xamarin Studio or Visual Studio to build new Watch Apps, edit Watch user interfaces in the iOS Designer, and
debug Watch apps in the iOS Simulator.
Stay up-to-date with Apple. We released same-day support for iOS 5, iOS 6, iOS 7, and iOS 8 so your apps can take advantage of the
latest iOS features as soon as possible.
[https://www.xamarin.com/platform]
"Xamarin.Android - The best way to build native Android apps."
Ship native Android packages. Xamarin.Android uses just-in-time compilation for sophisticated runtime optimization of your app’s
performance, meaning your app is a native Android APK.
Access any Android API, including new form factors. We bring 100% of Google’s Android APIs to C#, enhancing Java APIs with async support
and .NET naming conventions so you feel right at home.
Call existing Java code from C#. Use your existing Java code, frameworks, and custom controls in your Xamarin app using our
automatic binding generator.
Build Android Wear apps. With access to 100% API support for Android Wear, create full-featured applications capable of running on
Android Wear devices. Stay up-to-date with Android. Xamarin stays
up-to-date with the most current APIs from Google, so you can always
use the latest features in your apps.
[https://www.xamarin.com/platform]
Is there any realisation of animated GUI for any language except Silverlight?
Something like jQuery animations in web applications.
Something without requiring the user to install anything before using application.
Thanks ;)
You specifically exclude Silverlight, though it's not clear whether that is only because it targets the Web or for other reasons, too.
If you're happy to develop against the .NET Framework (which these days should be installed on most recent Windows systems), you could look at WPF (Windows Presentation Foundation), which has many similarities to Silverlight (e.g. it's also based on XAML), but targets desktop applications.
I am interested in developing an app for my new iPad purely for my own use. (well to start with at least)
Is there a way to develop an app without a mac?
Can I install the app only on my own iPad without having to sign up to the right to publish it when I might not even want to do that?
EDIT:
Could i use an old G3 powerbook for development? They can be picked up really cheap on ebay. Would something of that spec be up to running the xcode development environment?
I think the best option is to develop the application using HTML5 / Javascript and CSS, and use a service like appMobi or PhoneGap to compile it for IOS. They both have an online service that can make the build for you without needing you to own a Mac.
You have also the added advantage that you can compile your app not only for IOS, but for Windows Mobile, Android, Blackberry and even the good old web.
You have some Javascript libraries like JQTouch that allows you to easily implement the IPhone look and feel in your web app. Normally you can't access the native API from Javascript, but these solutions (appMobi and PhoneGap) offers a Javascript API that you can use to access Camera, GPS, Gyro, etc...
I think normally serious apps are coded for many platforms, and if you don't have the structure to pay to 4 different skill sets, it makes sense to code in HTML5, and from there you have a more future and device proof solution. Even if you "can" pay different developers to code in diffrent mobile platforms I would prefer to do it in HTML5.
Oh, and also take a look at applicationcraft.com, pretty cool online IDE (wysiwyg) connected to PhoneGap, really easy to develop prototypes. The generated HTML/Javascript is not very usefull to continue editing it outside their IDE (a bit complicated), but, again, for something very simple or a prototype it's something you must check out.
Good Luck
Is there a way to develop an app without a mac?
Officially, no. Realistically, unless you like wasting countless hours, no.
Can I install the app only on my own iPad without having to sign up to the right to publish it when I might not even want to do that?
No, you must be a paid developer in order to push to anything but the simulator.
xcode for windows.
http://ipodtoucher55.blogspot.com/2010/12/installing-ios-sdk-and-xcode-on-windows.html
Yes, you can develop without apple computer (using hackintosh).
And yes, you can install the developed app on your iPad without having to pay for developer program. There are a tons of guides over the internet about running (thus installing) apps on ios devices without developer program.
check this:
How can I deploy an iPhone application from Xcode to a real iPhone device?
You can develop for iOS without a Mac by using Adobe Flex. The Flex SDK is free and Open Source, and includes a compiler + packager. If you want an IDE, you can get Adobe FlashBuilder (not free, but with a free 90-day trial), which makes your development time much more productive.
You would not develop in C, C++, or Objective C, but in a combination of ActionScript (a dialect of Javascript) and MXML (markup language, mainly for rich GUI layout).
On the minus side: you have less control over what you can do (you can still do a lot) and you cannot use the iOS SDK directly.
On the plus side: it is very easy to develop great looking apps, and with very little changes, you can recompile them for Android, Blackberry Playbook, Windows, and Mac OS X.
You do not technically need a Mac to develop an app, unless you are serious about it. There are couple of solutions available to you for developing mac-less.
First, there are some services that port your HTML5 web apps into an iOS app, so you only need to write your code HTML5.
Second, if you dont want to buy a Mac, you can instead buy Snow Leopard or Lion, and build your own "hackintosh" (a windows computer hacked to run off the mac operating system).
Finally, you cannot make your app available for purchase in the App Store unless you are a paid developer. However, you could publish online as an HTML5 web application, or you could publish your app in a third-party app developer market (however you could only intall that app if you jailbreak your iPad).
Not sure how new this is, but Dragon Fire SDK is 100% Windows based (you do submit your code to them for compilation), but at no time are you required to own a Mac.
Real Player UI is definetely the one that I admire.
Need to know its development platform. So that I can request my team to work on same platform to deliver such a nice UI.
Is it .NET, MFC, WCF, WPF etc... etc... ?
Also which is the apt platform to use to make the application work on Window desktop PC, Web-enabled devices, iPhone or whatever.
I know if I use anything that is wrapped around window api, it can work only on device that works on Windows OS. (So definitely no iPhone)
So is there anything that can help programmers to work on UI application that are device independent
Nice UIs are not that attached to a specific platform, but to having a good designer and user experience designer.
Good UIs can be created in any platform.
I am certain there are many bad UIs that have been built with the same platform that RealPlayer was built in.
I'm tasked with "porting" a few apps from a Windows environment to various mobile platforms and Mac as well.
I plan on writing MVC patterned apps in which I write as many controllers as I can in some sort of universal library, probably in C or C++. Then writing the views in various choice languages (Objective C, Java, .NET, whatever) for the target OSes.
I've never attempted anything like this before, so my questions are: Is it possible to write and compile one library that can be used on iPhone, Android, Blackberry, Windows and Mac? Is it even wise to try this?
I understand that certain native methods simply won't be available on each platform.
You can create a library whose source code is portable, assuming that you properly abstract away any platform-dependent calls. You can't, however, create such a library, compile it, then use it anywhere; you'll have to compile it for each platform.
Your should take a look at the Mono Project. http://www.mono-project.com
...more specifically at :
MonoTouch: To develop iPhone applications in .NET
MonoDroid (BETA): To develop Android applications in .NET
Mono plugin for MeeGo: To develop MeeGo applications in .NET
And you know that you can develop on Windows Mobile in .NET already.
I've haven't found anything related to BlackBerry yet.
There are services like Rhomobile and Appcelerator which will allow you to do this sort of cross compiling.
I've never used either however.