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 9 years ago.
Improve this question
Does anybody know to give me a comparison of advantages and disadvantages in programming through C# in Xamarin Versus Android java native code?
Is developing through Xamarin is way more limited than native android, or the gap is not that far.
I would like to hear opinion from someone who has experience in developing with both technologies.
Thanks
Update 20160822: This advice still holds true. I continually am asked about this. One company I know of went with Xamarin only to find out that it did not solve their Android problems as they had to learn both languages/implementations to solve most their issues.
Update 20150513: Thus far, this is one of the most asked questions I get from startups. Which way should they go. I inevitably end up pointing them to this post. It is still solid advice.
I've developed with both. You can pretty much do whatever you want in Xamarin. The couple of difficult areas you're going to run into are:
Finding good, working example code. Edge cases are really the bummer here.
You'll find that you end up learning Java through Xamarin because you have to read so much Java code.
Another problem is that while Xamarin is doing well and is gaining traction, the community is still rather small. This poses a problem when you release a Xamarin app. If you need to bring in someone else to maintain it, they have to know .NET, C# and Android. Finding that combo is rather difficult and I've found that all the contractors or consultants that I needed to update my app were VERY expensive.
Thats the hidden gotcha. It will help you get out the door faster, but up keep and new feature development will cost you, IF you're NOT the one doing the updates.
Why do I know this? I've written two apps with Xamarin that I eventually wanted updated. I had to contact a contractor to do it because I simply didnt have the time. It was quite expensive compared to Android or iOS devs that were already out there. I ended up moving those apps from Xamarin to Native Android and iOS.
That aside. Its a freaking awesome platform. If you plan to always work on it, then use it. Being able to use the power of C# is great. After working with C# for many years I've grown to really have a disdain for Java. Thats personal preference, but it is what it is.
Its all about tradeoffs.
Related
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 9 years ago.
Improve this question
I was wondering if you guys could help me figure out what type of app and framework to develop in.
Having done quite a bit of research on my own, has me doubt my choice a lot since it could define a project for a long time.
My situation:
As an internship assignment me and 2 other students have to develop a timetable app for the school. The school has a few demands concerning the app.
For instance the app has to be secure (a login functionality is desired. For being able to access account information by law, to be able to e-mail a teacher regarding the upcoming lesson for a student) so there has to be tight security since we're handling personal information.
Since we're interns we have to hand the project over to the developers at the school after our internship is over. The school however, is a Microsoft school. The school only has C# programmers, hence there isn't a lot of experience in-house, when it comes to developing Objective-C. Java is quite similar to C# so it would be less difficult to develop in Android, but there is only 1 developer that has actual experience developing in Java and would therefor be a "single point of failure", which is not desired.
The application has to be able to accomodate multiple apps, if you will. The app would later contain functionality for multiple departments within the school. For these departments Video, the gyroscope, push notifications, e-mail etc. would become things that are needed in the app.
Aside from these demands there are the obvious ones. Which would be speed of the app, and "look and feel" would not be trivial matters.
My decision
Preferably I would like to go for Xamarin as the framework. I think it is closest to a native (SDK) app.
A fully native SDK app would be a very close second.
Others I have considered
Titanium
PhoneGap
eMobc
Marmalade
My request to you
What would you guys do in my situation. Would you agree with me or do you think a different type of app and framework has to be used here?
A year ago, I had to make the same decision and I went with Xamarin in combination with MvvmCross.
With this you get the best of both worlds:
You can develop most of the code in C#
You can share nearly all of the code between the applications (this is where MvvmCross comes into play)
You still have native UIs, i.e. designed in XCode for iPhone or defined in axml for Android.
Speed is not an issue, e.g. on iPhone, the complete .NET code is compiled ahead of time into the native assembly.
Furthermore, the Xamarin SDK is merely a very thin layer over the classes from the phones SDK, giving you the ability to use tutorials that are using Objective-C or Java.
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 5 years ago.
Improve this question
I want to write simple application with some 3D objects for Windows OS.
The application is very simple, like a gallery where we can move and see some pictures. When users go to the some picture and click on it a window will open and show picture with some information.
Which is the best framework for this task WPF, XNA, or something else? Application will be written in C#.
I can not say which is best, but I have done a while ago some things with the WPF 3D API and I liked it.
It was IMO very simple to use and the rendering seemed to be relatively fast. A really nice thing I found, was that it has an object-model that contains high-level-events such as mouse-down and click. Therefore you don't have to do much math. However, maybe provide also other APIs such high-level services, I don't know.
I would not try to create an action-game with it, but for a small app as you have described, I think it is worth a try.
Unity has been used for similar stuff. It can work on browsers (via a plug-in) or as a program, has a lot of documentation and most of the work involved in creating a 3D environment and interface is already done. Code can be written in Mono (open source C# implementation), JavaScript or a Boo, a modified Python scripting language.
It works in Windows, MacOS, iPhone, iPad and Android. And it is free in the standard version, or really cheap.
XNA is a little lower level, so it will require more work to get things started. It supports Windows, WP7 and Xbox 360.
See this discussion : WPF VS XNA
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 3 years ago.
Improve this question
Okay, sorry if I'm a bit vague or little specific. First of all, I'm really new to the business of programming and that kind of things, so excuse my non-knowledge of much of this. :)
Anyways; I've been reading a lot around on the internet on what technology to use and so forth when it comes to application development on the desktop (mainly Windows, since it's my preferred OS). And most of the answers I found said that C# was the way to go and it was the preferred language of choice for Windows (alongside with .NET of course).
Then, I read something about Adobe Air (don't remember where) but at least it interested me. And I then looked around for info about it but sadly there weren't much. But what I found was at least mainly optimistic (and then you have the I HATE FLASH-fan club).
But; since I'm new to this I started wondering about what technology was best and all that, but I just can't make up my mind. But I do understand that for applications that rely on high performance C# is better then Adobe Air.
But since I'm no power user and just want to create simple applications (like to-do lists, sudoku solvers and similar stuff) I'm not sure which one would be preferred or "the best". As far as I've seen Adobe Air have a lot of the good lookin' stuff while C# is the suited-up business stuff.
So, well, basically my question is what language/platform would you prefer for a complete beginner when it comes to simple, not really heavy performance applications? Any kind of answer would be nice. And sorry if the question is bad or something alike, I'm new to Stack Overflow as well. :)
There is no best way - use whatever interests you the most. Keeping up your motivation to learn is the most important thing at this stage.
One thing you might want to be aware of though is that there is a much larger C# community and it will be easier for your to find examples online and get help for C# here than it will be for Adobe Air.
You can create simple to-do list app using both technologies. That can be a great experience for you and give you a closer look at both technologies.
I would say go for C# since you are starting from ground zero. If you already had a bunch of web programming experience then I would say go for Air, but with C# and .Net there are lots of cool things you can do with what you learn.
I would tay start out with a simple "Hello World" WPF application. Once you do that, add a button that changes the text to "weeeeeeeeeeee!" Then add in a slider that changes the text size. Play around. Pick one small step at a time that grabs your attention, and don't give up until it works exactly how you envisioned it. Soon you will be on your way to developing your To-Do app.
Once you get the basics down, the programming world really opens up to you. You can use your C# skills to make a game in XNA. You can buy some inexpensive servo controllers and make physical stuff move around with your programming. You can port your To-Do app over to Windows Phone 7 without having to recode anything. The programming world will be your sandbox. Have fun!
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
Here's the situation:
I need to develop a desktop tool that will take in an input from Oracle (text) and it's output is a print of a layout generated by that tool.
The tool needs to be fast and able to print easily and not much extra software required on client PC's which ALL run Windows.
Now i've studied Java, PHP in the past however I don't want to use PHP for the Desktop App
and I have my doubts about Java in regards to Printing and developing the GUI.
It seems to me like with C# I can develop the GUI easier and faster, and most PC's have a lot of the tools required for the GUI in the OS (.net framework).
A tool like NetBeans helps, but more often than not the GUI design is either broken
or shoots across the screen when I make a simple change.
So now I'm thinking about starting in Visual C#, however I would like to get your
opinion.
And from my past VERY short .NET programming experience, I can still remember that deploying over the internet is easy as well, with JAVA I've had some issues with that as well before I got it to work.
So in short:
Windows environment
Lot of GUI design
Fast app that runs on client Windows PC's without much 'extra' software installing
Easy print programming
THANK YOU!
My preference would be C# or VB.NET with Windows Forms. WPF is also worth looking at, and will give you the most modern UI, but it has debatably a steeper learning curve attached.
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 starting to learn c# and wanted to create an actual app which one of the two would you start with?
Personally, I would learn WPF. We use a lot of Winforms, but we're in the process of migrating to WPF. I think that's a more future proof set of skills. WPF Virtual Labs are a good place to start.
My rule of thumb is to choose the most recent technology that doesn't require your users to go through extra effort. If you have to support Windows XP, then WinForms is the way to go as it doesn't require XP users to install .NET updates. If you don't have to worry about XP, then WPF is probably the ready to go.
I recommend WPF - it is now very mature and well supported. Of course, winforms is still supported and some new development is being done for it. However, WPF is significantly more sophisticated and powerful. Almost as importantly, the tool support for it is MUCH better than for WPF.
Here are some links for you.
A Guided Tour of Windows Presentation Foundation
Windows Client .NET
WPF vs Windows Forms
I would say learn both to have a stronger foundation of knowledge and be able to work with legacy code, but put more effort into WPF because it will eventually replace WinForms.
The basics of either are much the same -- WPF offers a lot more features by way of declarative UI definition and skinning/theming, and a slightly different set of layout techniques. While you're at the "Hello world!" stages, it makes little difference -- certainly less than using either GTK# or the Swing implementation in VJSSupUILib would.