I am embarking on my first windows phone app. I noticed there are two templates one is in Javascript (Blank App (Universal Apps)) and the other in C# (XAML) again Blank App (Universal Apps). Which one should I use, I know it depends a lot on the project context, but basically its just a simple phone app, that reads and displays data, mostly crud operations. Any help is appreciated.
I think there are a lot of resources in the internet regarding this question.
For example:
http://www.itwriting.com/blog/8350-xaml-and-c-or-html-and-winjs-for-windows-store-universal-and-cross-platform-apps.html
http://www.neowin.net/news/microsoft-likes-winjs-for-making-windows-8-apps-but-most-developers-prefer-xaml
https://softwareengineering.stackexchange.com/questions/156361/advantages-and-disadvantages-to-using-xaml-c-or-html5-javascipt-for-metro-apps
If you have a C#/.NET background, choose XAML - if you have a web background, choose WinJS...
I think that XAML is more popular than WinJS (especially for Windows Phone).
Here's my take to add to the list--http://www.kraigbrockschmidt.com/2013/01/17/html-javascript-xaml-directx-language-windows-store-app/ . In my partner-facing role at Microsoft I got this question quite a bit, and it really boils down to personal preference and experience unless you run into a place where the languages don't quite have parity at present. Parity was more of an issue in Windows 8, many areas were resolved for Windows 8.1. (Parity is more a matter between Windows/Windows Phone now rather than between the languages.)
Personally, being the author of Programming Windows Store Apps with HTML, CSS, and JavaScript, Second Edition (free ebook, Microsoft Press, 2014), I like the JS approach very much because you can leverage standards. On the downside, JS code is the least secure of all the options (see this blog post of mine), which might be a make-or-break consideration.
Related
I am a C# windows developer. I recently started to work with WinJS. Working with WinJS, I have noticed some challenges and limitations. Can face some new challenges as the community support for WinJS is very less. Below are the few points mentioned regarding this concern
a. WinJS does not support Visual Studio features like Finding References of Classes and Variables which is very useful to code productively.
b. WinJS is not strongly typed as C#. So we will get to know about the errors at runtime only instead of compile time which is difficult to Debug and time taking process.
c. WinJS does not support feature “What you see is what you get”. Visual Studio designer is not available for WinJS. We can see the application design only after we run the application which is again time taking thing.
There are very less chances of availability of “Ready to Work on WinJS” resources. Because most of the developers in Windows community work on C#, XAML languages.
d. Direct compatibility of third party libraries for WinJS might not be available.
Have anybody experience in WinJS and faced similar issues? Or Are there any solutions exists for this? What is the scope of improvement in Windows 10 version for WinJS??
For an HTML/CSS/JS designer, that's what Blend for Visual Studio is for. Load the project into Blend and you'll get a designer that also works when you're running the app. Documentation for this is on https://msdn.microsoft.com/en-us/library/jj129478.aspx, and there's a great video from //build 2013 that shows the flow, http://channel9.msdn.com/Events/Build/2013/2-311. I also cover using Blend to some extent in my free ebook, Programming Windows Store Apps with HTML, CSS, and JavaScript, 2nd Edition.
https://dev.windows.com/en-us/develop/winjs
see this link it give the solution your problem which is given below
a. WinJS does not support Visual Studio features like Finding References of Classes and Variables which is very useful to code productively.
b. WinJS is not strongly typed as C#. So we will get to know about the errors at runtime only instead of compile time which is difficult to Debug and time taking process.
c. WinJS does not support feature “What you see is what you get”. Visual Studio designer is not available for WinJS. We can see the application design only after we run the application which is again time taking thing.
Do Windows Phone 8 Application developed for Windows Phone 8 device will run on Windows Surface Tablets (RT & 8.1)? Kindly clarify me.
Could you please suggest me on, what are the changes required for migrating the application.
Take a look on the Portable class library.
It allow you to share your code between different platform.
http://msdn.microsoft.com/en-us/library/gg597392(v=vs.110).aspx
This blog clearly explains how to use it :
http://blogs.msdn.com/b/stephe/archive/2012/05/07/partager-du-code-entre-plate-formes-gr-226-ce-224-la-portable-class-library-1-4.aspx
Anyway you got specific dev to do.
You will need to rewrite many portions of the application. It's difficult to be more precise as you did not describe anything about your application.
The UI, assuming you select C# and XAML for the Windows 8 modern application will need a significant amount of changes. While there will be a significant amount of knowledge overlap and technology similarity, the UI will not be portable. The components are similar, but for example, you've probably used the Windows Phone toolkit which is not available for a Windows 8 store application. Another consideration is that on the larger screen sizes, you'll ideally want to use a different layout of your application.
For the business logic, you may be able to use much of it as is. However, anything that deals with the file system or network (and more) will not necessarily be portable. You could use a portable class library for some features, but you may still need platform specific code.
While this all may sound like a tremendous amount of work, I'd actually like to suggest that it's not. The platforms are very similar, the development environment will be identical, and some amount of UI work would have been necessary anyway. Assuming you create two applications, the structure might look like this:
PhoneApplication
Windows8Application
DataModel
PortableClassLibraryStuff
PhoneSpecific
Windows8Specific
A lot of differences beetween WinRT and WP8 API makes porting much more difficult. But if you are still interested in this topic I can suggest you
Waiting for WP8.1 and W8.1 Update 1 API combination or
Writing your own little framework in a portable class library for navigation, setting, notification, ... support. I already did that work and there are a lot of possibilities for code sharing (resources can be completely shared with the binding notation of WP8). For more information please visit the opensource github project: Github MultiPlatform Framework sample. You will still need to rewrite a lot of xaml code but the leaked footage of the WP8.1 API already showed that we will be able to use much more shared UI code :-)
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am new to app development and chose C# and xaml for apps. But things didnt quite go well. I aint a full time programming freak; can just manage an hour or two a day after college studies and with xaml my head really hurts.
Recently i came to know that even html5 can be used to make apps. So my question is this :
Should i continue with xaml or switch to html5 ?
Ref : http://devchic.azurewebsites.net/?p=581
https://stackoverflow.com/questions/11147012/should-i-choose-html5-or-xaml-for-metro-development
My requirements are :
1) Shouldn't be too time consuming
2) I will currently focus on light and simple apps ( Games maybe, but not in near future)
3) They should be available to both wp8 as well as desktop, and if possible to other platforms as well.
(I happen to know c++ and Java at intermediate level.)
While either solution could work, here are some things to consider. I'm going to assume you mean Windows Store applications when you said "desktop."
1) Shouldn't be too time consuming
That's very difficult to say. If you're not familiar with C# and Xaml, there will be a learning curve. You mentioned you know Java though, so the language shouldn't be too much of a challenge. If you're interested in quick to build, I'd suggest you start with Xaml and C# and use the Xaml visual designer to gain some experience and ignore the Xaml output at first. By default, like a web page, the layout system is not absolute and often uses various types of panels (grids, dock panel, etc.) for layout.
Microsoft has a lot of great examples on MSDN that would allow you to both learn more about your options, but even contrast the coding techniques. Having taught someone at work in a little more than an hour how to get started and be productive, you might want to give Xaml another go.
2) I will currently focus on light and simple apps ( Games maybe, but not in near future)
Your definition of light and simple isn't specified. You could create applications that meet that requirement with either platform. If you're building games, the answer changes and becomes more complex. As you're still learning though, I'll not talk about that here.
3) They should be available to both wp8 as well as desktop, and if possible to other platforms as well.
Today, there are 4 common ways of developing an application for Windows 8.1 desktop:
Xaml/C# (C++ is also an option here)
WinJS/HTML/JavaScript (WinJS is a Windows store application-only framework)
Either of the above, hosting a web page (either from a web server or local in-app)
C++/DirectX (for games)
Currently, there isn't a way to use WinJS or the same code for option 4 on Windows Phone. So, you'd likely narrow your options to Xaml or a web page view. While you can't take Xaml and necessarily use the same Xaml on both platforms, the patterns and development experience are very close. By using a "portable class library", it's now possible to share the common business logic between the platforms.
A Xaml approach would allow, without extra effort, the application to be a native experience. Th application would have the appearance and behaviors of a Windows Store application. If you went with just an embedded web page approach, you'd be on your own. I will not take on the experience and look of Windows. If you aren't familiar with doing reasonably complex HTML and CSS, an embedded web page solution may be too time consuming.
(I happen to know c++ and Java at intermediate level.)
Here's a few links that might help you:
Getting started developing apps for Windows Phone and Windows 8
Develop Windows Store apps
This will likely help you with either choice.
Traditional Windows Desktop applications
If you want to build a traditional Windows desktop application and not a Store application, your options are similar, with the exception that you might choose to build your application using WPF. windows Presentation Foundation was the predecessor to the Xaml used in Windows Phone and Store applications. It's not identical, but the knowledge of one transfers well. You can also host an web page inside of a "desktop" application. I've done it frequently. If you're trying to build someone "modern" though, learn the Windows Store frameworks.
If XAML hurts, I say go HTML5. I don't understand XAML very well myself, so I use HTML5 for my Win8 apps.
Regarding your requirements, HTML5 fits 1&2 perfectly. It's not very common to write desktop apps in HTML5 though, so your options there will be quite limited.
I'm completely new to Windows Phone and the Windows galaxy in general as far as programming goes. For a project of a phone app that has to run on a windows phone, I started exploring the resources and I have some questions.
One of the problems I encountered is that things change very quickly. For example, answers to this question say that browsers in Windows Phone will most likely not support HTML5. However, there are many online tutorials (for instance here) introducing ASP.NET MVC 4 and how it is appropriate for mobile apps.
I would personally like to go the "HTML5+javascript" way instead of learning how to develop with Silverlight, which apparently has been discontinued by Microsoft. However, my first concern is evidently to be able to create an application that works!
So with that in mind, my questions are the following:
My impression is that HTML5+JS is being introduced in replacement of Silverlight and will be more used in the future. Is that correct?
Knowing that I have to build an app which should be able to play videos and audio, record audio, and connect to a library to do some speech processing in the background, should I use Silverlight or can I try using ASP.NET MVC 4? (From what I gather, Silverlight would be better than XNA)
Are there limitations to using HTML5+JS as compared to Silverlight or the other way around?
Can you package a web app (i.e. using HTML5+JS) to be used locally on the phone if there is no access to a distant server?
Any specific pointers or answers on these specific issues will be more than welcome! :)
Currently, Windows Phone 7.1 does not support full HTML5+JS as a replacement for Silverlight. In Windows 8 (NOT the next version of windows phone, but the next version of Microsoft's desktop OS), HTML5+JS is presented as an alternative to using XAML and C# (it's a little confusing because on Windows 8, "metro" apps do not run Silverlight, but they still operate using XAML and C#). But that's neither here nor there... To summarily answer your question(s): In the phone's browser, there is very limited HTML5 capability.
From what you've described, you definitely want to use Silverlight for your Windows Phone app. The answer to that part of your question has never changed, Silverlight from the beginning of WP7 would be your best option. XNA is exclusively designed for gaming development.
To answer all of your questions, point by point:
My impression is that HTML5+JS is being introduced in replacement of
Silverlight and will be more used in the future. Is that correct?
This has not been confirmed (as of this post), but speculation is that this will be the case in some future release of the OS (no word on when that may be). But no, this is not currently an option, and there is no promise from Microsoft that it ever will be.
Knowing that I have to build an app which should be able to play
videos and audio, record audio, and connect to a library to do some
speech processing in the background, should I use Silverlight or can I
try using ASP.NET MVC 4? (From what I gather, Silverlight would be
better than XNA)
Silverlight. Silverlight. Silverlight. :) ASP.NET + MVC will not work. XNA is intended to be used for building games. Attempting to build more standard user interfaces using it would give you a migraine to say the least, and would not look anywhere near good.
Are there limitations to using HTML5+JS as compared to Silverlight or the other way around?
and
Can you package a web app (i.e. using HTML5+JS) to be used locally on the phone if there is > no access to a distant server?
As answered above, there is no way to do this on the phone.
As for pointers on all of this. I strongly encourage you to simply google (or bing if you're into that kind of thing) "getting started with windows phone" or "windows phone tutorials". Best source I could point you to is the Windows Phone Developer website. It's got some great tutorials that don't assume you know lots about windows phone. Best to get this material from Microsoft. It'll be more reliable, more well written, and ultimatly more useful. I've been writing Windows Phone apps since before the phone was released, and I still use it for learning the basics of something new. Great place.
Redmond has a good idea occasionally:
The next-gen Windows will come with a new programming foundation, letting developers build native apps with the same techniques they use for Web applications. Microsoft calls this new variety "tailored apps."
There is always a steep learning curve for developing GUIs; each new toolkit you learn is different enough that it takes a lot of time and effort and frustration. Thus developing in HTML with CSS begins to look very appealing: it's much easier and much more portable; and with HTML 5 and CSS 3, it is very powerful.
Is there any support yet on Ubuntu (or even better, a cross-platform toolkit) for developing native applications that use HTML/CSS for the GUI? To minimize overhead, I do not want to start a full browser session. (That's not very good desktop integration.) I am particularly interested in answers for native JavaScript or Python 3, but any language would be alright (easier to learn a new language than a new GUI toolkit, in my book).
Edit: I have found this page, but have not had time to read it all or test it. It linked to Python XULRunner, but again I have no previous knowledge of it.
This was asked on Ask Ubuntu back in August of 2011.
In summary, the options are:
SeedKit
The JavaScript bindings for GNOME.
There are more options, but those are the two "big ones".
You can write native apps in HTML/CSS and Javascript using node-webkit, is an app runtime based on Chromium and node.js, you can use node.js modules into your apps. it's available on Linux, Mac OSX and Windows
I would like to add QtWebKit to the list. It's like SeedKit with better support.
I'm using it personally on a project where we have native (C++) code for the data layer, business logic and the presentation layer is done via HTML5 and heavy use of JavaScript. As far as I know Qt can be used with python as well so perhaps you could use it for all the business logic.