I am a Dot net C# developer web and desktop apps, recently I have decided to begin development for windows phone 7
from the initial searching on the internet I found that I could user silver-light or XNA Framework for developing on WP7
I do not know any thing about both of them, so do I have to learn both of them to be able to develop WP7 APPS or just one is enough
also Which is better for development if one is enough!
Thanks in advance.
There is no good answer for this question if you do not describe application you want to develop. Both technologies are useful for different purposes. I had the same problem with my applications and those my conclusions:
Silverlight: better for business applications when you have small amount of animations (GPU usage)
XNA: high quality games and rich animations
Of course you can use also Silverlight for games and XNA for business application but generally I spot that it will not work well in most cases.
I first start to implement my application in Silverligh (app with lots of animations) but performance was poor so I decided to switch to XNA. If you want to learn basics of both read Charles Petzold Programming Windows Phone 7
Welcome to WP7 community.
Basically if you want to make event-driven applications, Silverlight is the answer and if your code depends on continuously running loop(like in a game) XNA is the thing.
As u have said dat u develop apps, Silverlight is the light for your question.
You can get lots of samples on net. The official site is http://www.create.msdn.com.
I think Silverlight is easier to start with.
to simplify, Silverlight is intended to be for apps, while XNA is intended to be for games.
Related
I recently decided to go into WP7 app development, but haven't actually started learning silverlight/xna; Only C#. I already know C++ quite well.
my Dad, who works for Microsoft, has recently told me that there's no point to learning Silverlight because it will become irrelevant in the long run; due to HTML5's superiority. However, Im not aware of any way to develop apps for WP7 using HTML5, and I barely know anything about markup languagez anyway.
I wanted to get some proffesional advice on this, so here's my question:
Taking my C++ backround into account, what would the pros/cons of the HTML5 path and the WP7/silverlight/xna path? In terms of financials (cost of WP7 app submition, website hosting, etc), familiorarity (C++), and flexability (abilities of language)?
Right now there is only one way to develop good apps in term of UX and OS services - Silverlight/XNA (not only first or second, but you can combine these two in a one app). Later MS will add support for C++, hence you are C++ dev the best option is to pick up C# and start making apps.
Regarding this "Silverlight is dead long live...eee HTML 5?". We all have heard that there is a new thing that solves all the problems and would be great - all of them failed, badly. Sure, it has it place, but mobile HTML5 apps suck in comparison with native apps. They're slow, use a lot of resources. Moore's law exponent is slowing down, size of a phone is limited and batteries capacity doubles every ...40 years. Cannot put a lot more silicon, make transistors many times smaller, this is not the best scenario for HTML where you have to download it, parse it and then download css, javascript, pictures etc. while users want their phones to be fast and fluid. One trick pony does one trick.
Maybe there will be some form of compilation to Binary HTML/bytecode, yet right now I don't believe ya.
The Silverlight/XNA route feels 100% natural for me as a Developer. I started building an WP7 app about 2 weeks ago and completely I'm blown away by how productive C# / Silverlight has allowed me to be. That is, with ZERO previous experience in Silverlight/WPF... Just my general .NET/C# knowledge.
Silverlight might be going away from the Browser, but I think it has a very bright future on Windows Phone and Windows 8.
I found this book extremely helpful: http://www.gottabemobile.com/2010/11/04/101-windows-phone-7-apps-the-book/
Good luck!
You could look in to PhoneGap for building native WP7 apps from HTML5.
I will be developing an interactive application, involving multitouch, several layers of large bitmaps, and video playback. The screen resolution will be fairly large (1920x1280).
For several years, I have developed interactives in Flash, iOS, and OS X Cocoa. However, this project must run on a Windows box, so iOS & Cocoa are impossible. Also, I'm concerned about performance in Flash, since there may be 3 videos playing simultaneously, and large bitmaps moving around.
I know little about the technologies available on Windows. I'm investigating Silverlight, C#, Unity, Processing, and Java. If anyone can offer advice, it will be greatly appreciated.
You seem to be investigating several technologies on different levels:
C# and Java are programming languages. What you prefer may depend on your existing skills, but C# is from Microsoft so chances are that you will experience less friction using this language if you develop for Windows. Picking the right programming language is an important decision.
Silverlight is a "technology stack" from Microsoft. It enables you to develop XAML based applications that run in the browser. Compared to the native WPF stack it is less powerful. Choosing Silverlight, WPF or another technology stack like Processing.js is an important decision.
Unity is a dependency injection container from Microsoft. You can use this or any other suitable container if you like. Or none at all. You don't really have to think about this until you have made some of the more important decisions about your project.
Personally, I don't have experience with the type of application you describe, but I would go with C# and WPF. WPF has some support for multitouch on Windows, and only if it isn't adequate for your requirements you need to to go native and develop in say C++ which tends to require more work.
Multitouch in Windows 8 has been redesigned but unless you want to develop for a yet to be release operating system this is not an option.
Use Visual C++ if you like to create a LAN based Application, C++ is known for it's power and you could have many resources that could help you in developing this application. If you're going to create this application for web Use ASP.net(C#) C# is known for its flexibility and class libraries dedicated for web and client appilcation i also advice the use of WPF and Silverlight applications.
I suggest you have a look at Windows 8 and Metro Apps. Here is a link to start with this: The Microsoft BUILD conference, Windows 8, and the new UX Challenge. C# (.NET languages in fact), HTML5 and XAML are clearly the direction. Native C++ is back in town with WinRT. Silverlight is now in the gray area :-)
Even if you don't use Windows 8, it will give you a good overview of multitouch future in the Windows space.
I am interesting in: what is the best way to write applications (for example games or business apps) for so different platforms like Android and Phone 7 with minimal changes in source code, logic and other developing artefacts? Or it is impossible and i must write my application two times from the "ground" for each of devices? Please tell me about your experience?
Thank you for any advice!
If it's possible for your app, create it as a web application, perhaps using some mobile web app framework.
Unfortunately, you have to write your app twice in this case. I wouldn't recommend using mono for performance reasons. I also found it quite unreliable, tho it may work just ok for your apps.
Windows Phone 7 requires you to develop in C#. However, you can use Mono on both iPhone and Android. This allows you to reuse your business logic. Have a look at MonoTouch and MonoDroid. The MMI (Man-Machine Interface) needs to be done differently on each platform.
Good luck!
I am a computer Engineering student and i want to choose my path as soon as possible. Will I be able to develop anything using C#?
Windows Phone 7's entire development platform is built on .NET and C#, so yes you can but that would be essentially your target mobile OS. Java will get you Android, and iPhone more or less requires Objective-C. Of course, you can get around each of these to some extent but by and large if you choose to learn C# you'll be targeting Windows Phone 7.
A lot of answers here indicate that c# is windows mobile / CE only; that is incorrect. In addition to targetting windows mobile and phone 7, c# can be uses to target iPhone via MonoTouch, and Android via MonoDroid. So that is the main contenders really.
If you want to become directly valuable to a company as a mobile developer, learn Java or Objective-C. C# is fine, but Android and iOS have a much bigger market share than Windows Mobile 7.
Becoming an expert in any of those languages will be a good long-term career move.
C# with mono/.net covers Windows Phone 7, Android and iphone.) Then after you get the hang of the language, platform etc learn java to add another skill to your arsenal.
No. You can use C# only for Windows Mobile. Java only works in the form of the Android API (which is somewhat similar to J2SE) on Android, and in the form of J2ME on Blackberry, Windows Mobile, and Android.
If you want to write mobile applications, you'll need to decide what platforms to write for, and learn the languages and APIs of each one of them. There are a few high-level languages that run on most mobile platforms (like Adobe AIR), but depending on your app, that's not an appropriate option.
Different mobile platforms require different languages, and future platforms will most likely require languages that don't even exist yet.
Your best bet is to pick one language / platform to focus on now, and expect to have to learn other languages / platforms throughout your career. Indeed, the chances are that you'll do other kinds of development, in addition to mobile computing development.
(For the record, I've been in IT for 30+ years, and so far I've used over 20 programming languages ... and encountered many others. You just deal with it.)
I think better u choose java.Because nowadays many phones support J2ME.J2ME does not need high cost configurations.J2ME is from the family of java.It have many java advantages.Many devices other than mobile such as home applainces,set-top boxes,etc support J2ME.So J2ME had a great future.So choose java/J2ME
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I'm a C++/Java developer and have no idea about .Net or GUIs. I need to develop a windows app for 2000/XP/Vista/7.
I think I've come to conclusion that C# is the best and the fastest way to go (please correct me if I'm wrong). What do you recommend? Which GUI approach should I learn? (Forms? Any other stuff?)
Is it the best way to compile in .Net 2.0 mode? It's going to be an application for the public to download.
For desktop applications there are basically two options; WinForms and Windows Presentation Foundation (WPF).
WinForms is more traditionally built and hence easier to learn. WinForms might therefore be a simpler start, but if you plan on actually using your gained knowledge in GUI development for .NET I'd say you're better of diving into WPF from the start. It's a much richer framework, and where Microsoft is putting their effort for desktop applications. It is also similar to Silverlight, meaning you can easily get into Silverlight too when you know WPF.
This other question gives some useful resources when getting started with WPF.
Also check out this tutorial at MSDN.
WpfTutorial obviously has a few nice hints for you too!
Good luck!
In my personal development experience Windows Forms is just about as easy as it gets when it comes to rapidly deploying a GUI application on Windows. WPF is of course another option, but using it would likely require you spend some time familiarizing yourself with XAML. Windows Forms look and feel like a lot of the available GUI options for Java, it's just much better than the majority of them, in my opinion.
If you want the fastest possible GUI development time in .NET, Windows Forms is it.
Yes. C# is the language of choice when it comes to .NET development. Since you've programmed in Java, you'll find that the language looks very familiar (it looks a bit cleaner though and has some very nice features like delegates and you can even use pointers if you really want to, although you won't need to in most circumstances).
It's SWF (System Windows Forms) or MWF (Managed Windows Forms - a lightweight version of SWF written in managed Code using System.Drawing - it frees you from the WinAPI that's underlying classical SWF) all the way.
There's also GTK-Sharp, a GTK+ binding for C-Sharp, but since you're developing for Windows, users will find it strange to install a third-party GUI framework for your application.
I wouldn't recommend using WPF though. It makes direct calls to the underlying graphics hardware, which means it's quite fast, but not portable at all. It will only run on x86 systems (not SPARC, etc.) with DirectX compliant hardware rendering units (graphics cards) and it will not run on a system with strong hardware abstraction (like most Unices like BSD or Linux or Solaris).
Novell also stated that they will never implement WPF in the near future due to it's strong hardware dependencies (Novell wants Mono to be portable across many processor platforms). Don't use WPF. Software is no longer just a throw-away-product and when it comes to operating systems we're in the age of spin. The platform you're running today isn't necessarily the platform you're gonna run tomorrow. WPF is a proprietary and patent-encumbered technology developed by Microsoft and Intel. If you use it, you'll find yourself in a very nice Win32-on-x86 vendor lock in. And this means that you'll most definitely find yourself completely re-writing your application sooner or later. Just write portable software from the beginning, even if you don't need that portability today. I'm telling you from experience, you will need portability tomorrow. Definitely!
You could use Windows Forms or Windows Presentation Foundation to develop your GUI; although, Windows Forms might feel more familiar to you. If you search on Google for Windows Forms tutorial, you will get many options for getting started.
If you need to use .NET 2.0, you will be limited to Win Forms. WPF requires .NET 3.5.
I would suggest downloading Microsoft's free Visual Studio Express Edition to use for developemnt. it includes an excellent drag-and-drop GUI design tool.
I would recommend learning Winforms first, then move the WPF. Winforms is easier to learn and get something working quickly. The future however is WPF, so I wouldnt leave that in the dark. I posted some good books and links for GUI development work.
Books
Design of Everyday Things A really good book about design of interfaces. It's not software specific but a must read for GUI designers.
Coding Horror. He recommends a lot of development books on his book list, but these ones are specifically interface-related:
Don't Make Me Think
About Face 3.0
The Inmates Are Running the Asylum
GUI Bloopers
Web Links
Are Confirmation Dialogs Harmful? A blog entry by Guido van Rossum (creator of Python)
GUI Articles A few articles about GUIs by Joel Spolsky (joelonsoftware.com)
Interfaced Systems International Has a lot of resources, especially on their UI References page
User Experience Guidelines for Windows Vista
I disagree with all the WinForms advocates. It's not easier. It may be easier for someone who has traditional experience with GUI programming, but this poster doesn't have that.
WPF has a better design story and the databinding is much, much better than WinForms. You can get up and running on WPF at least as fast as WinForms, and then go much further without running into the limitations that WinForms has. Couple this with the design-time databinding in VS 2010, and I'd say that anyone starting out on GUI development should completely bypass Winforms.
C# WinForms will be the fastest in terms of getting a practical GUI working rapidly. Though if you think on making a complex GUI, with animations, 3D etc, WPF would be better.
You can use CodePlex to find some good working projects to learn from in terms of best practice, both for WinForms and WPF.
You can also look here for some good books on both WPF and WinForms.
C# for sure. Use Winforms for line of business app / classic GUI.
read petzold 'programming windows with c#'
Or just dive in with visual studio. Creating GUI with VS is really easy - you will like it
You will find the langauge transition from java to c# pretty simple (not the gui bit tho)
I think I've come to conclusion that C# is the best and the fastest way to go (please correct me if I'm wrong). What do you recommend?
Personally, I would stick with Java. We (meaning OffByZero, the company I co-founded) have released an encrypted text editor called OBZVault, which is written in Java.
We originally wrote it in Linux, and then ported to Mac OS X and Windows. We found that the Windows port provided a perfectly acceptable look & feel - almost (but not exactly) like a native Windows app.
We used InnoSetup to build a native Windows installer, and found that quite good as well.
Bottom line: unless you want to learn a new language & platform, or you have a specific need for functionality provided by a different platform like .NET, stick with Java for your Windows development too. You'll need to learn a Java GUI framework, but then you'd have to learn WPF or WinForms if you switched to .NET anyway.
It may be faster for an experienced .NET developer to build a Windows app in WinForms or WPF, but if you're already well versed in Java I say stick with the tools (language, libraries, IDE) that you know.