Best framework to create mobile applications? - frameworks

I'm looking for a Framework to create mobile applications, if possible writing all code in Java. The idea is create for all mobiles Android, iOS, Windows Phone etc.
I found: Sencha, Vaadin and others.
What's the best ?

if you need to build cross mobile application you can use phonegap http://phonegap.com/ it is better you can use javascript and HTML and CSS to build applications.

Xamarin is another great one. I think you're asking the wrong question though. There isn't really a BEST one, its more what fits into your style. Some might say phonegap is the best, but you can't use code behind in phonegap only HTML CSS and JavaScript. So you gotta find what works best with what you want to do.
Also, look up chrome web apps. You can now develop apps using chrome rendering engine and usual html css and other web based code types and package into apps for the different os app stores.

Everyone is talking about Ionic, I am using it and I love it. Here are some slides to introduce you.

I would use ionic framework, is based on apache cordova, and use AngularJS. If you dont know AngularJS you have other alternatives like goratchet made by bootstrap creators. The only 'problem' is that you'll have to use javascript, html and css, not Java.

I am using ionic framework as well. The best part is you do simple command like ionic build ios to have an ios version of your app, as well as ionic build android for android version.
AngularJS is actually easy to learn (as long as you have basic understanding of JS), the best resource would be egghead.io. I use Ruby on Rails as backend to render an API for my ionic app to consume, so i pretty much don't need to use NodeJS or other JS framework as backend. Also, there is a lot of support for ionic. You can always search Google for a codepen example if you need help.

Related

Iconic's ability to support complex web applications

Ionic was built with mobile in mind - creating a good mobile experience using web technologies. You start out with a web app, so there is the possibility to use it for all 3 platforms. However I’ve never seen anything that resembles a complex web application that uses iconic for both the web and mobile. Will it support the ability to use 3rd party controls such as complex grid controls that may only be used on the web and not in the mobile apps. I’m trying to decide if we use ionic just for mobile and have a completely separate code base for our web application. Any invites would be greatly appreciated!
Basically everything that works on the web also works on mobile devices built with Ionic.
Ionic creates a WebView where javascript code runs. you can use capacitor or cordova to manage native functionality.
So if you have web developers you can do anything you could do as "Mobile Web" but in an app.
Now you can also choose whether to use react, angular or vue.
For example using Ionic with react you can use the VirtualDom and develop exactly as if you were using react on the web.
Instead, using for example React Native you will be forced to use a set of react components (or write new ones) but you will not have the VirtualDom available.
However you can also integrate native code, which Ionic doesn't support.
There are a lot of articles online that cover the subject by comparing competitors:
From Ionic
So yes, you can use all javascript libraries!

Ionic : create web app and native apps with same code?

I'am about to start learning ionic to create a project for web and mobile.
What i want is : writing code once, and having a classic website and an iOS and Android native apps.
The design is different between website and apps, so it can't just be responsive, it kinda must have different html for different platforms.
Is this possible with this version of ionic or should i create two different projects for web and apps ?
Thank you!
First of all, Ionic does not create native apps for iOS and Android, they are hybrid apps.
That being said yes, there is a way to achieve what you want but it probably isn't the best way. Ionic build does produce a plain web project inside a www/ folder which you can deploy as a website.
That however is probably not the best option if you want a great website, as web and mobile app design is quite different.
Ionic already creates hybrid applications, i would not use it as a tripartite technology and rather create a separate project for a web application.

Does Ionic compile the Code to Native?

I've searched some times here but could't find an Answer to this.
Does someone know this and can explain how Ionic handles it?
Does Ionic compile the Code to Native? NO
Ionic is for developing Hybrid apps.
What are Hybrid apps?
Hybrid apps are essentially websites embedded in a mobile app through
what we call a webview. They are developed using HTML5, CSS, and
Javascript, and execute the same code regardless of the platform in
which they run. They can, with tools like PhoneGap and Cordova, use
the native features of a device, like GPS or camera.
What are Native apps?
Native apps are developed in the language required by the platform it
targets, Objective-C or Swift for iOS, Java for Android, etc. The code
written is not shared across platforms and their behavior varies. They
have direct access to all features offered by the platform without any
restriction.
Here is a nice article about it.
Cordova converts the project into a native which has only ONE Page, that is a WebView (WKV WEB View in iOS, etc). And all of the ionic code is run on that webview. Basically an ionic/cordova app is a website which looks like an app!

Is it compatible for browser

Sorry for this very basic question but it's important to know.
I never used this kind of framework before and i am interested by trying ionic !
We can build html5/AngularJS apps with this framework, but is it only to generate native code for mobile apps or can we also use our code for the web app (should we maintain 2 different code ?) ?
Check out the browser support section
Ionic is focused on building native/hybrid mobile apps rather than
mobile websites.
While you can get support from webkit, there isn't much support for other desktop browsers because, well it's just not what we want to focus on :)
It is browser competible, however not officially supported.

Is Titanium's HTML5 (and JS) really native?

I'm a little confused about this. Titanium is bragging about being able to style with CSS, program with javascript and create with HTML5, whilst making the final product native to the platform. How is this possible? If I'm writing in JS/HTML/CSS then won't they be run within the browser? Making them non-native?
See jhaynie's explanation of how the Titanium Mobile SDK is used to compile to native code. In essence, the Titanium Mobile SDK creates a mapping between their APIs in javascript and the native APIs of the target platform.
Titanium code are written in core JavaScript and code is then converted into native code(i.e. objective c or java) But when you use HTML and CSS into titanium you need to render them into "WebView" a browser without address bar. So in that sense titanium is completely native.
You code a Titanium Mobile app in js using their API that 'bridges' your code to the native API.
You don't use html/css at all unless you want to include a webview with local content.
It's possible you are looking at old documentation. Titanium used to use HTML/CSS/JavaScript for creating applications which did not use native UIs but as of 0.9 is more of a JavaScript abstraction of a generic mobile device. This means you won't be using HTML or CSS to build your app and the process bears little resemblance to building a web app. Other tools like PhoneGap use the web app model in place of a native UI.
That said, you can create a web view (in-app web browser) in Titanium which you can use to show HTML5 content if you so desire. Also, as of Titanium 1.5, you can also use a CSS-style language called JSS to separate your JavaScript application model from your content.
Apple iOS has a "WebView" which is basically a browser window under control of the program. They take your code, plop it in to a WebView and wrap some infrastructure around it, and compile and ship it as a "native" program.