I was wondering if someone knows what has faster performance speed ionic2 or nativescript? Does ionic2 still run on top of Cordova's webview? Or is it similar to nativescript?
Ionic 2 still uses the webview. Things have gotten faster and newer devices are faster of course. Ionic is doing some great stuff, but you'll have a better performing application using NativeScript IMO. I don't have any benchmarks right now but I can assure you if someone does have benchmarks NativeScript will likely win on all fronts because it's not a webview. It's similar to react native and xamarin. As with most choices it depends on what you need and factors of time, cost, etc. All of these frameworks have pros and cons. Personally I settled on NativeScript since I didnt know react for react native, and i wanted to have native UI not native looking components in a webview. However for a quick prototype or an app that you might want to reuse as a PWA (progressive web app) ionic is a good choice in that regard. You can of course get code reuse with them all using angular and react in react native but the UI is different since its not shared with the web DOM. Hope that helps some.
So that answers your question, here is a xamarin and NativeScript comparison article from Burke Holland (works for telerik) but the tests seem very impartial as I've used both products and I am aware of the items he goes over https://www.nativescript.org/blog/details/nativescript-and-xamarin
Ionic's payload is smaller with the phone already carrying the browser.
The performance of Ionic 3 is simply superb.
I have noticed an unfounded snobbery when it comes to webview based frameworks saying they're slow. Most people are not making the next Facebook or Youtube but more generally applications for CRUD operations with a little bit of mobile goodness.
That's the audience for this product.
Related
I'm getting ready to work on a children's book app. It will involve lots of illustrations and some animated menus, but nothing as crazy as a video game as far as animations. I'm trying to determine whether to use Phonegap and DOM or CocoonJs and Canvas.
I've been reading that Phonegap can slow down a DOM app that works fine in normal mobile browsers, while CocoonJs will speed up an app built in Canvas. But then I also read that CocoonJs now has something new that will somewhat support DOM elements.
My DOM test app works great in mobile browsers, but i can't test it in Phonegap on my iPad or iPhone bc of Apple's damn Developer fee.
Does anyone have experience with anything close to this kind of project? I'm considering doing it in Canvas just for the learning experience. But if anyone has any strong recommendations either way, can you please let me know your thoughts?
Thanks so much guys!
Also consider Famo.us, which is more popular and has a stronger showcase than CocoonJS. Here are my insights:
PhoneGap
Tried-and-true, FOSS. Lots of resources. Lots of plugins, albiet disparately and haphazardly maintained. Eg IAP and Ads - very likely plugins - aren't in core, are separately (and barely) maintained. No focus on performance, only x-platform compatibility.
Pro: Popular, tried
Pro: FOSS
Con: No performance focus
Con: Choppy quality in plugin user-land
CocoonJS
A Cordova wrapper (as PhoneGap is), which adds performance optimization via it's Webview+ or Canvas+ plugins. Canvas+ is for HTML5 canvas games, so it's not for you. Webview+ is basically a packaged Chromium-latest for better performance on Android versions that don't use it as their default browser (default browser is what's used for webview on Cordova). It doesn't work for Android <4, those will just use default webview. I've actually tried deploying a Cocoon app using Webview+, but I didn't notice a performance improvement. Either (a) there's some tweaking I need to do, (b) "performance improvement" (air-quotes). Additionally, it has standardized plugins that will work on both iOS and Android: Facebook, Ads, In-app Purchases (and more, but those 3 we need). In PhoneGap land, those 3 are 6 separate repos (1 per platform), maintained by 6 different devs - and not always well-maintained. On the flip-side, I keep reading that Cocoon premium (required to use their extensions) is $$$… like $50/m or so.
Pro: Theoretical better performance
Pro: Unified plugin experience (ads, facebook, IAP) - biggest pro IMO
Con: Price
Famo.us
The way I understand Famo.us: it's similar to Cocoon's Canvas+. Packages a performant webview for improved animation / canvas performance. It comes with its own JS-based DSL for building your app. I.e., unlike PhoneGap & CocoonJS where you just build a standard HTML/CSS/JS web app (allowing code-sharing with your other projects), Famo.us has its own JS framework for building the app. It has a very strong showcase: AirBnB, Yelp, etc. use Famo.us.
Pro: Performance
Pro: Free?
Pro: Strong showcase (Yelp, AirBnB)
Con: Not run-of-the-mill web dev (unlike CocoonJS, which lets you just drop in your PhoneGap app as-is)
I'd personally recommend (for your situation) to explore Cocoon's Webview+ setup.
CocoonJS is great if you want to have a good performance in mobile, also you can use the WebView inside CocoonJS by calling an specific function like this:
<html>
<body>
<script src="CocoonJSExtensions/CocoonJS.js"></script>
<script src="CocoonJSExtensions/CocoonJS_App.js"></script>
<script src="CocoonJSExtensions/CocoonJS_App_ForCocoonJS.js"></script>
<script>
CocoonJS.App.onLoadInTheWebViewSucceed.addEventListener(function(pageURL) {
// Show the webview. By default, the webview is hidden.
CocoonJS.App.showTheWebView();
});
CocoonJS.App.onLoadInTheWebViewFailed.addEventListener(function(pageURL) {
console.error("Could not load the HTML file in the webview");
});
CocoonJS.App.loadInTheWebView("webview_index.html");
</script>
</body>
If you do it in canvas you can decide later if you wish to use PhoneGap or CocoonJS.
Personally I don't think your project warrents the use of CocoonJS although there is no harm in doing so.
Advantages of CocoonJS include near native performance. The downside is there are yet to release their pricing model - I believe it's currently free but you have a compulsary CocoonJS splash screen.
As for dom vs canvas: depends on your project. I personally prefer canvas as it's generally faster these days when moving lots of objects around. But in saying that, your project sound very static; which case you might want to consider dom (there are also a fair few dom page flipping tutorials out there).
Here is a canvas/PhoneGap project I did for my kids to use as a reference.
On a side note: You should be able to test your app with PhoneGap through Xcode's emulator.
if you are going the canvas route you may also wish to consider (open source) ejecta:
http://impactjs.com/ejecta
I am planning to create a cross-platform mobile app that has native-like versions for most mobile platforms, maybe Windows Phone, Android, iOS. It's supposed to store data in DB on server, and the mobile app is mostly for visualizing that (numerical) data.
Basic usage scenario
User opens the app
App data is refreshed via internet connection
User inputs new data
New data is sent to server, handled and DB updated
User's app data is updated according to DB data (ANIMATION!)
User updates settings on his app that alters it's behaviour.
I'm a noob when it comes to designing and programming mobile apps + web services alone, so I'm hoping you could help me with the following questions. Technologies I'm most familiar with: Java EE, Python, HTML/CSS/JS, MySQL, Graphics. Maybe I should go for PhoneGap? Thanks a lot!
1) What cross-platform mobile technology you would recommend?
2) What kind of solution would be most suitable for server/app server? (Estimated code lines < 5000)
3) What's a good place to start learning scoring algorithms?
Please respond if you have answers to any of the questions asked.
EDIT: found a similar question: Cross-Platform Mobile Application Solution
#thevangelist: It's a very good question you have raised, all mobile developers face the same problem when we start writing an app. Today there are multiple Open Source Frameworks available in market which are trying to solve the same problem but in different manner.
Based on my research and experience, I would like to recommend below technologies which we can consider while building an mobile apps.
View: View is an important part of any mobile apps. When we start building UI/UX we also have consider it's platform design principles. Looking these points I would like to recommend React Native for the same.
React Native: It is a Facebook, and Instagram developed JavaScript library used in creating native mobile applications. It allows us to write iOS and Android applications using JSX, a known HTML look-a-like code, and JavaScript. It is based on “Learn once, write anywhere” methodology.
Pros
Renders native views with a native behavior and interaction … you’ll end up with a real native application
Has a paradigm of “Learn once, write anywhere” where developers only need React and JavaScript to create better application for Andoroid, iOS.
Uses native architecture and concept
It does not require a WebView
CSS Flexbox is used for layout design
Cons
Code abstraction leads to bugs and memory leaks
Cannot work without the API, which is provided by React Native, technically there’s no fallback like with classic hybrid mobile apps
When creating proper native applications, a developer will have more power and control regarding performance tuning
React Native is still a new framework so we can’t predict possible problems and downsides
These cons are somewhat negligible, especially if we consider that React Native is empowering more and more native applications with each passing day.
Data in Transit: If your app sync data from web services, then there are multiple frameworks available in the market to make our job easier. Please find below some of the most popular JavaScript RESTful Frameworks:
ACTIONHERO, StrongLoop
Data at Rest: You would also be needing offline storage for the sync data. Since we do not have direct support for native SQLite in JavaScript, we need to use some of the React Native SQLite Plugins. Please find below plugins which are available in the market:
almost, andpor, jbrodriguez, ramsundark5, remobile
For Data at Transit/Data at Rest, I would like to recommend Siminov Framework which is available on all the major platforms (Android, iOS, Windows). It also supports hybrid technologies such as React Native, Cordova, Xamarin.
Pros
Available on all the major platforms (Android, iOS and Windows)
Easy to configure, it provides standard xml based structure using we can easily configure our app database
It allows developers to bind ORM with remote RESTFul web services too
Also have support for SQLCipher on all the platforms
Cons
Lack of community: Recently they have launched their products on all the major platforms, not many people are using it.
Since the configuration is based on XML structure which looks pretty old to me. But based on their documentation it was done to support all the major platforms
Algorithm: I have found this link nurlybayevaAMS9 related to algorithm, hope this may help you.
Try avoid writing cross platform application. It is doable using HTML5+jQuery. But you can never get the same look and feel as native app. secondly windows, ios and android have their own look and feel and will come up with their own elements. You can never cater to all three having same code base. Better is to code using native sdks.
1) Never used PhoneGap, although aware of it, but don't forget to consider a simple HTML5 application. If possible, this would save you lots of work and maximize compatibility.
2) You can develop great RESTful webservices with both Java EE (see JAX-RS/Spring) and Python (see django). The choice is really more a matter of personal taste.
I'm about to develop an app for iPhone, Android, and for web too. I think there must be some "standard" way for doing this, in order to reuse as much code as possible.
Which is the best way for doing that? Webservices? (only if the app uses internet) Maybe an API? Another way?
Just for the record, the web application will probably be developed in Ruby On Rails 3.
Thanks!
There are a few cross platform development tools out there that let you write once and compile for multiple platforms. I know I've seen questions on both tool here on SO, so others might have some good advice on these specific products.
PhoneGap
http://www.phonegap.com/
Appcelerator
http://www.appcelerator.com/
Barring that, if you are looking at doing native development on each platform, the web services APIs are a good way to go. I've built an App that is heavily data driven, and I built out RESTful services over JSON that do the heavy lifting for the iPhone, Android and Web versions.
There still is quite a bit of work that goes into implementing a feature on each platform, but once I architect code on one platform the hard, creative work is done and it's just porting it to the next platform (Same applies, mostly, to the graphics as well). Since I am coding for each platform individually I do try to take advantage of both code and UI conventions for that platform to give the user a native experience (say building menus for the menu button on Android, something not supported on iPhone). To me that's a benefit of developing for each platform individually, however, it also greatly increases time to market for each version.
Since you're looking at Objective-C, Java and Ruby, 3 completely different languages, there's not an easy way to develop a shared library without using a intermediary layer like those linked above.
Well, all three are different languages, so anything you write for one won't work for the other. An API on a server may be able to get you the same data to all, but its highly unlikely that you'll get any reusable code. I'm doing the same thing, and realize that, so I am just sharing common things such as UI and code-design between them.
Hi I have been recently exploring some of the Javascript mobile frameworks that can be used for developing mobile web apps like Sencha, JQTouch, JQuery mobile etc.
I know the adv and disadvantages of both.
I just need some recent stats which show the market's adoption or opinion.
I tried three ways to develop mobile applications.
First method is to use frameworks that will take your html/css/js files and package them into mobile applications depending on your targets (BlackBerry, iPhone, Android, ...). I used PhoneGap (known today as Cordova). I didn't like it at all because the UI's rendering is so ugly on some devices and the user experience is broken. I had to use it with jQuery Mobile because it gave me a good UI design start. I tried some Phonegap Android generated applications on my personal device and it's really horrible. Some of them got rejected by Apple because of that ...
Second method is to use Appcelerator Titanium SDK. One word to sum it up: Awesome. One language to use (javascript) to create your UI/Controller. It's so easy to learn, so powerful to develop with and it has many out-of-the-box functionnalities (like facebook API, Yahoo Query Language, ...) that will allow you to put in place solutions easily for both Android and iPhone. BlackBerry is coming soon. What I liked the most is that it converts the written Javascript into the targetted platform with the default UI. It's really great. And, above all, the UI is easily customizable (with a css like system).
Personally, I put in place apps that can: Take a photo with the device then send it to a remote server, send messages to twitter/facebook, advanced geolocation, etc.
Third method: Native! It would take time if you target both iPhone and Android but, the big advantage is that you can create anything you want without being tied to a Framework for areas such as games, augmented reality , etc.
In my opinion, if you want to create simple applications with some nice features (weather, twitter feeds, sending on a facebook wall, ...), use Appcelerator Titanium SDK.
It converts your code into NATIVE.
If you have time to spend learning native languages, do it. It's the best way ;)
Hope it helps.
Regards.
I've summed up my thoughts on the whole "native vs. web" discussion in a blog post here: http://www.springenwerk.com/2011/09/thoughts-on-mobile-ui-design.html
In a nutshell: You can't get around getting to know the platform you are targeting if you want to provide a great user experience. Plus, you shouldn't try to mimic native UI/UX in a web application, it will only disappoint your users.
here are some pros and cons of native apps vs. web apps:
Native apps:
Native apps have more security
Native apps have higher user engagement, it has higher click-through rate (CTR) among the ad-serving publishers
When it comes to aesthetics and overall user experience, it is incredibly difficult for web apps to trump native apps
you don't have to buy a server and maintain it, therefore, for small businesses it is the ideal solution, not web apps which require a server.
Web apps:
it's cross platform - that means your one app will work on both iphone and android
cheaper and faster to develop and maintain
you will find programmers easier than native apps
updates are easier
Check out this post for some more opinion - http://www.thorntech.com/2013/01/html5-vs-native-apps-which-will-win-the-mobile-app-development-battle/
In particular, the last paragraph is worth noting. If you go down the path of building an HTML5 app, it is worth having some type of background "syncing" of content so you are not always pulling it from the web in real time. The app will be much more responsive if you load HTML pages from disk.
From my experience, the success rate of a native apps are much better than html or javascript based ones. I do not have sufficient numbers to back it up, but these are some issues that may crop up when trying to build html5 apps for different platforms. e.g.
Browser OS or webkit differences can cause unexpected bugs, css issues that could take quite a while to debug.
Your app is running on top of a webkit browser engine which takes up additional resources.
Older or non-smart phone devices may not have a modern webkit engine.
Nevertheless if you have good web skills over native, then getting an app to the market the quicket and cheapest route would be html5. Some apps lend very well for html5 such as data listing, and text content driven apps. I have written a writeup on HTML5 vs Native on my blog. Hope its useful.
We have a push based web-application. Recently, we planned to make an iPhone app for it. Much like Facebook has it's iPhone application as well as web presence. We are looking for a UI framework that can get us going quickly. I've leafed through PhoneGap and couple other JS based UI frameworks mentioned here. I am bit unsure what can suit us the best. So, I am looking for your suggestions.
Our constraints are as follows:
The framework should be JS based. We all are web-devs and want to avoid learning Objective C.
Framework should support iPhone's capabiilities as smoothly as a native app does. If not, we will prefer a JS framework which is the smoothest of all JS frameworks. So, this is the most important constraint.
It should support smooth swipe through screens, support rotation. Nice, if it can capture shake as well. But shake does not take preference over a better framework without shake support.
Nice to have -- with little or no modification in code, if the framework is supported on other touchscreen phones as well. Android and Symbian would be suffice. But again, we are focused on iPhone for now.
I am a bit curious to know what can be the best choice to start development with. I will be thankful if you share your experience with pros-and-cons of the framework that you have used.
Thanks
Nishant
I have been playing with following frameworks.
Jo
Sencha Touch
jQuery Mobile
These are for serving Web based mobile sites, they can then in turn be made into Apps for Android or iOS using PhoneGap
Of the 3, Sencha is the more mature project and has the most things out of the box. Jo looks very promising and would probably directly compete with Sencha. jQuery mobile is very interesting but just far to early to do any production code with it, too rough around the edges. jQuery mobile takes a different approach to the others as it is html based and it interperates the attributes on tags to turn things into tableviews or menus.
jQuery mobile is quicker to hack together and get your head around, where the other two take a little bit more thinking. But once you figure them out its easy enough.
If you don't want to serve the site via a url at all and want to just build an app then Appcelerator is the way to go. You write code in JS and it makes native Android or iOS apps for you. You will get access to pretty much the full Android/iOS api.
I have coded with appcelerator, however I am no longer going to use it and use one of the above frameworks, probably Sencha for just now. I can get access to the device native apis via PhoneGap and for simpler apps give a great experience cross device via a url.
In about 6 months, or sooner, I think jQuery mobile will be the daddy...