With the tremendous progress going on with web technologies, does it make sense to bring these to desktop and client-server applications.
We typically build our applications using winforms and wpf and the code base is like 100k+ lines of code.
Is it worth exploring the option of HTML5 UI and Node.js backend and use a framework like the chromium embedded framework or node-webkit.
The reason I am asking this is that the support from Microsoft for the desktop technologies is questionable (wpf, metro apps ...).
At least with the technologies I listed, it is easy to port to make the application work across all platforms and companies like microsoft and google are pushing for html5 and javascript.
A number of companies are using CEF and similar web-based technologies for desktop applications.
Steam from Valve is CEF based (https://developer.valvesoftware.com/wiki/Chromium_Embedded_Framework), as is
Spotify https://community.spotify.com/t5/Help-Desktop-Linux-Mac-Windows/Chromium-Embedded-Framework/td-p/912377 and
Adobe Creative Cloud (I believe using Adobe Brackets Shell over CEF and incorporating Node.js) https://github.com/adobe/brackets-shell
Advantages for them are that server side content can be delivered to the application, as can UI updates, and the client machine is fully accessible.
We are using it for product authorization and delivery, the advantages of CEF for us are dynamic update from the server of both UI and business logic in Javascript, and because CEF allows calls from Javascript to C++, we can access files on disk and Registry entries that pure Web code cannot.
So I would recommend looking into this.
For ordinary Line Of Business applications, I would suggest no, don't go half-way.
I used to do advanced UI development in WPF, and it was amazing for its time (a decade ago), but nowadays it is really amazing what can be done all within a modern web browser. And yes, Microsoft's support of full-powered desktop technologies is like a ghost town (I suspect they just want to get their 30% commission on apps in their store, so they've shifted focus to UWP).
Why do you need to create a hybrid desktop/web application? Unless you have a specific (and important) need to break out of the browser's sandbox, why not go all the way and create a web application? Modern browsers have a lot more capabilities now, and they keep getting better.
There are also many technologies and frameworks that really help to make large-scale web application development a lot easier than it used to be.
Related
This is going to be quite a hectic question and im hoping that you can all Bear with me.
Im having difficulty fully understanding some things about mobile App development.
So my Main question is : What is the difference between Telerik Platform and Xamarin ? Dose it just depending on what you are more comestible with, Like if you are a c# developer and know the .Net framwork, Then use Xamarin or is it alot more complex than that ? As i know that Telerik uses Javascript, so is it more of an open dev based mobile app ?
Which is better for the future of mobile development as i want to move in the right direction.
As an Extra: Has anyone heard of Dart ? i found out about it last week and haven't had much time to Read up on it, but it looks like a web based solution from google.
Dartlang
In Xamarin you can build native applications for Android and iOS system.
It is also possible to write them for Windows Phone.
Xamarin uses C# language.
Apps are created natively using Xamarin wrappers.
There are two options for creating apps in Xamarin:
1) 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
2) Xamarin.iOS & Xamarin.Android are best for:
Apps that require specialized interactions
Apps with highly polished design
Apps that use many platform-specific APIs
Apps where custom UI is more important than code sharing
Telerik Platform is good for web developers who want to create mobile apps:
Here you can write html and javascript.
Remember also that your apps on iOS and Android will be displayed in WebView (browser). Only Windows Phone apps can be written in html and javascript natively.
Hope this will help.
Please also see this (I asked about Xamarin and Apache Cordova):
http://www.codeproject.com/Forums/13695/Mobile.aspx
All of the mentioned framework do the same thing in different ways, its totally depends upon your skillset and interest which framework you find easy to understand or find interesting.
Each of those have their market in which you can grow. below are some links may help you.
http://www.telerik.com/campaigns/build-mobile-apps-with-dotnet
https://forums.xamarin.com/discussion/13686/the-future-benefits-of-xamarin-over-other-options-and-mobile-apps-replacing-websites
Dart is a modern open source programming language that allows to write concise code
built-in support for async/await, Future (Promise), Stream (Observable), ...
Supports lots of platforms
Server with the Dart-VM (Windows, OSX, Linux)
in the browser after to-JS transpilation
Android and iOS by Flutter https://flutter.io/
embedded systems by Dartino https://dartino.org/
Dart can be transpiled to JavaScript (to-TypeScript is work in progress)
extensive high-quality standard libraries
dart:html library that for browser abstraction that makes most polyfills redundant
shipped with lots of tools
package manager
analyzer/linter
debugger and profiling tools
test runner
Dartium development browser
...
IDE support
easy integration using the IDE services the analyzer provides
Atom plugin
WebStorm/IntelliJ plugin
...
I was asked to provide a tablet application with HTML5/JS/CSS which does not have dependency on any platform. Requirements:
Cross-platform mobile/tablet application
Offline capability and Storage (it should work in lack of internet connectivity and be able to synch after get connected)
Real-time data (it should be able to show any small changes from sensor values)
I should be able to connect to a CAN interface and get sensor values and ECU data. Because I have not come up with any solution for this part, I am thinking about Bluetooth. However, HTML5 doesn't support Bluetooth.
I'd appreciate to give me some vision if HTML5/JS/CSS can deal with this requirements (especially with Bluetooth)
Another question is that is it possible not to use any frameworks such as PhoneGap, RHoMobile, .... and just develop cross-platform app with raw HTML5/CSS/JS and have all requirements?
Have you looked in to PhoneGap / Cordova yet?
You can easily create cross-platform mobile applications using HTML5, JS and CSS.
http://phonegap.com
The built-in API provides access to most of the device's native features and functions. You can manage offline storage using localStorage or SQLite databases, and can detect network connectivity statuses to determine if you are offline / online and what level of connection you have (Edge, 3G, 4G, WiFi). With a combination of those, you could manage your data synchronisation.
As for bluetooth, the PhoneGap API doesn't support it out of the box, but it is highly extensible so developers can create their own plugins for missing or required functionality.
The community is awesome and many of the plugins have been compiled into a central repository on GitHub: https://github.com/phonegap/phonegap-plugins
I know that there is a Bluetooth plugin for Android available on that repository.
You can also write your own plugins quite easily to add any extra features that you need:
http://www.adobe.com/devnet/html5/articles/extending-phonegap-with-native-plugins-for-android.html
http://www.adobe.com/devnet/html5/articles/extending-phonegap-with-native-plugins-for-ios.html
** EDIT **
You posted an amendment to the question afterI'd written this answer mentioning PhoneGap. The honest answer is no, without a framework that interacts with the native device functionality, raw HTML5, CSS and JS would not be able to deal with bluetooth etc.
No, you cannot. A pure web application is not able, and will likely never be able, to use bluetooth.
HTML5 Bluetooth and Audio
Having developed a Web App before, I can tell you that anything involving offline has to be simple, and using device hardware is out.
Check out the frameworks, you may be able to get something to work. But it may just be a better/more realistic bet to develop a Native Application from the get go.
After a lot of searching I came up with MoSync which is a cross-platform SDK and is intended for developing different mobile applications. I believe MoSync can be the best answer for this question since it is really a rich SDK (C, C++, HTML, JavaScript) and has great tools and community that try their best to help you.
For further information I encourage developers to check here or visit their websites.
Most of the future mobile apps will be developed using HTML5. HTML5 standards are getting adopted very rapidly and those standards are supporting phone features like GPS, Accelerometer, Camera, Storage etc.
I will recommend you to use PhoneGap if you want to use any device features.
I Want To Ask basic question of dojo toolkit usage
Can i use it for desktop application development these applications run on windows platform may or may not have internet connectivity
If So Than How
Kindly Answer In Detail
Thanks!
Well, Dojo is javascript framework/component collection. So your question could be answered here:
Can you do Desktop Development using JavaScript?
Adobe Air won the race in this question.
In Wikipedia article;
Dojo Toolkit is an open source modular JavaScript library (or more
specifically JavaScript toolkit) designed to ease the rapid
development of cross-platform, JavaScript/Ajax-based applications and
web sites.
That means there is no way to use desktop app development but again in Wikipedia;
Dojo can be used in JavaScript-based Adobe AIR applications. It has
been modified to meet AIR's security requirements.
Sitepen, a Dojo consulting company, has made an Adobe AIR application
called "Dojo Toolbox" using Dojo. It includes an API viewer, and a GUI
to Dojo's build system. Normally, the build system is run from within
Rhino, but in this AIR application the build system can be run from
AIR, without use of java.
So when we look Adebe Air Wikipedia page;
Adobe Integrated Runtime, also known as Adobe AIR, is a cross-platform
runtime environment developed by Adobe Systems for building Rich
Internet Applications (RIA) using Adobe Flash, Adobe Flex, HTML, and
Ajax, that can be run as desktop applications or on mobile devices.
So, YES.
This depends somewhat on what you mean by "desktop application".
If the app can be implemented as a self-hosting web app, e.g., local DB for storage, run an embedded server, etc. then sureāit's just a web app, coincidentally hosted on the same machine.
You could run it in an Air app, but why not just use Air then?
Like most .NET developers I was watching the keynote for the Build Event in Anaheim, Cali and had a questions about the new support for building applications for Windows 8 using JavaScript, HTML5 and CSS3.
They showed quite a few examples and even said the new Windows 8 marketplace was written using these technologies. The only thing that kind of has me guessing is when they put JavaScript in the same category of C#, in the sense that you could program your windows apps (have access to .NET directly) using JavaScript.
Obviously being a web developer this was pretty awesome news considering some of the applications I've built using JavaScript, HTML5 and CSS3.
The question I have is whether or not the applications we build for Windows 8 are truly web compliant? Can we build apps for Windows 8 and turn around and launch them on the web? Can web applications that are currently online access some of the features they demoed?
Like I said this would be an awesome advancement. Not to put down Silverlight, which I have written quite a few applications for, and the way it works in blend rocks. And the thought of replacing JavaScript with some of my apps that are written in C# is not even an option.
Is this just to get "web" based developers to develop for Windows or is this a cross platform solution for building applications?
Slight clarification, the Javascript/HTML5/CSS3 windows programs run on a new layer called WinRT (Windows Runtime), not .Net. All of the new Windows Metro style apps will be built on top of this layer rather than the older .Net. If your app utilizes the WinRT features, obviously you would need Windows to run the app. It is your choice if you want to integrate those features. (Obviously it depends on what you are trying to do with your app) I believe you can build an all standards compliant app and have it run on the system just fine - you just won't be using any MS specific features. In that sense, it would be like a webpage that you launch as an app.
Other notes:
MSIE currently uses some -ms specific prefixes until those features are accepted by W3C and given official cross browser names. Not unlike -webkit-border-radius,-moz-border-radius and border-radius.
The HTML5 uses some features such as grids that are not yet implemented in most browsers.
Microsoft includes a lot of Javascript libraries to make it easy to build apps. Many of these are jQuery based. Some are Windows specific. Not sure what the licensing is to use them elsewhere. I assume the jQuery is allowed to be portable whereas the Windows ones, wouldn't make sense to use outside of WinRT.
#Matt
To clarify the "converse", standard web app written in HTML5 running as a Metro application:
Assuming your application isn't doing "Bad Things" then yes. The Metro app environment is restricted by default. In order to access non-local resources (e.g. a website) from within the application in HTML5/JS, you must create what is known as a "Web Context".
The Web Context allows an application access to the internet and unsafe resources while preventing that same context from accessing privileged resources, like the Windows Runtime APIs.
This ultimately means that if you need to host a Bing Maps widget and want to get GPS information from the system, you would need the following:
an iframe inside the page (which is Local Context by default) hosting a Web Context that contains your Bing Maps widget
use window.postMessage to send data between the Local Context and the Web Context (contained in the iframe)
Call the Windows Runtime API for accessing the GPS location of the device from the Local Context mentioned above
This application model affords you the security that no website opened inside the JS application will have rogue JS executing Windows Runtime APIs to scrape your data. This is probably the biggest area that you will have to re-architect in an existing web application to get it running as you must push data between contexts if it comes from an unsafe resource.
Short answer is no -- apps built using the WinRT stack won't be able to run in a "normal" browser. I'm not sure about the converse though -- if a standard web application written with HTML5 can be run as a Metro app.
There are alternatives to developing for iPhone besides the native Objective-C API. In particular, there are CSS/Javascript based solutions such as the iUi Framework.
Can you write successful iPhone apps with CSS/Javascript? Does Apple approve such apps? What are the advantages and disadvantages of using this approuch?
Thanks in advance.
(1) You can write successful apps with CSS/Javascript. The first generation of iPhone apps were all CSS/Javascript.
(2) Apple routinely approves such apps.
(3) The advantages are that you can leverage your existing knowledge of CSS/Javascript to write apps without having to learn a new language and a new API. The disadvantage is that such apps are not as fast, flexible and powerful as compiled apps. It is exactly the same situation as on a non-mobile platform. Webapps do not compare to apps written with the system specific API.
However, in some cases they can be almost as good. For example, if the main purpose of your app is to interact with a specific web site, then a CSS/Javascript app will probably perform just as well as a compiled one.
There's not really any question as to the "best way". There's just a way; that is, using UIKit and Obj-C, with OpenGL ES for games.
There are some other approaches, but they are generally, well, not so good. Developing applications for the iPhone using CSS/JS is a bit half-assed; but doesn't really require apple approval; seeing as how they are just web apps.