[Q] Native code or xamarin for beginner app developer - IDEs, Libraries, & Programming Tools

I am wanting to learn app development, and I have some C# experience. I have heard of a tool called xamarin which lets you code in C#, but if I may want to get a job doing app development one day, should I learn how to code in the native language first?
Thanks for the input

lordbyronxxiv said:
I am wanting to learn app development, and I have some C# experience. I have heard of a tool called xamarin which lets you code in C#, but if I may want to get a job doing app development one day, should I learn how to code in the native language first?
Thanks for the input
Click to expand...
Click to collapse
Start with whichever you find easier and friendlier.
There are jobs out there for both Xamarin and native developers. Plus, once you've grasped one framework, learning another one will be much much easier.
Good luck.

I'm admittedly biased as someone who's been doing native dev since day one, but I would at least point out that as robust and awesome as tools like Xamarin are today, they're an unreliable foundation upon which to build subject matter expertise. By learning native dev you're picking up foundational techniques that aren't going anywhere any time soon; Xamarin abstracts a lot of that learning away.

Related

I want to be an Android developer when I grow up.

I want to focus on developing GUIs but I'm not sure where to start. I just read through a few pages of http://source.android.com/ to get more information and it was helpful but I'm still not sure what my skill set should be. I also went through Google's new App inventor and finished all the tutorials but it still seems like a toy.
I can: design interfaces, code javascript, implement XML (weak on C and Java but I get it), create anything using photoshop or any graphic application, color-coordinate, test and implement and write--I can write technical instructions fairly well.
So... that said, what's a typical Android designer's skill-set?
Thanks.
Patience, mellowness and a strong constitution!
The Android development platforms so far available are pretty poor if you're used to something like Visual Studio. The best option seems to be Eclipse running the Android ADT plugin. There is plenty of documentation about how to get it all up and running and it is quite easy to install and configure. The app inventor is a toy for non-developers to create simple applications and it works well for what it is but as soon as you want more complex UIs or more complex code, especially when it comes to using external libraries, you will need to get into Eclipse.
You have the right skills, in fact I would say UI and graphics design is the weakest area for many developers. It is for me. I can write beautiful functional code that does amazing things but my UIs suck unless they are simple. I always need to find someone who can help me with that. In my experience, and I have a lot of commercial code development experience, good UI design is a widely missing skill. It therefore pays well and is highly sought after. You might consider specialising in it?
Be careful going from C to Java. Java is still a pig of a language, do a little googling for "problems with Java" and be especially careful of the fact that Java passes everything by reference unless you use cloning. If you don't always write very loosely coupled methods and are good with encapsulation, this will bite you and often in very difficult to understand ways. I recommend running through each method with only this in mind before you consider the first version of the method complete.
My advice to you is to get Visual Studio Express (they're free), either VB or C#, it really doesn't matter, and become proficient with object oriented programming, proper error handling and scope of objects and variables. Do these things, and assuming that you have the right mindset to create good code, and you'll protect yourself from all the usual bugs that amateur developers introduce.
Then move back to Java. Java is a lot easier to be proficient in when moving from something like VB or C# because whilst frustrating, due to the things you'll miss, you will at least know rather than "not know what you don't know", if that makes sense.
If you are serious about doing this for a living, buy some books by Steve MacGuire.
"Writing Solid Code"
"Debugging the development process"
If every develope could do what these books teach, we would have a much more capable software world.
Good luck!
I have the same question? What do you think will be future programming? Developing web apps like Facebook or Android apps?
How is with work today?
I did banchelors from computer science, and want to try masters now, but I need to choose developing Androids apps or Webapps. I am pretty good at C#, JavaScript, XML.
There's a lot of milage in mobile apps, will be good for many years but there is no doubt that the future is web apps.
Excellent! What a great response. Source.android has a lot of information on what a developer should know but I still can't find information on Android GUI design--specifically. Any advice on this?
Thanks.
I think everyone should learn some c/c++ or other native language. Most will say im crazy for saying this but to appreciate what comes with the languages u mentioned above(which are all managed code) I think you should learn power and use behind native code.
c#, java, .net are all good places to start, i would not go with vb. If you choose to start with c/c++ you will be able to do any of the above easily. Tho others think its harder to learn...I say others bc i have always preferred c/c++ to the above.
Simonta... You rock!
Many Thanks.

[Q] future android developer

hi guys
I am an 16years old guy android lover.eddicted to Android
after using android from an year I have decided my future to be an Android devoleper
my aim is to work in Google android project or to become an devoleper like cynagon
can u(the best devolepers of xda) say me what languages to learn and all that I need to be a best android developer.
I also have the question that which operating system is good for learning languages and for Android devolepment is it
1 windows
2 mac os x
3 ubuntu
please my life is in ur answers
Really nice to see other ambitious persons wanting to develop in Android I myself have kind of the same question but I will open my own thread about that later.
Now for you.
I would say you should learn Java as I often read. and when you got a good basic of Java ( or any programming language for that matter) about variables and loops.
Also google provides several usefull starting points for android development but I wouldn't start with that before you have a good basic knowledge of programming itself.
http://developer.android.com/sdk/index.html
This link I find very usefull you learn how an android app works. Where is the data stored, what does it do when you click an app away( instead of exiting the problem)
http://developer.android.com/guide/topics/fundamentals.html
That is my 2 cents about Android Development.
For OS I myself use Mac OSX I find it alot easier to connect with adb than Windows but I can't say what is better.
Goodluck! hope to see alot of programs from you!
You need to become proficient in C/C++ and all the rest will fall into place. I recommend the linux platform (you mention ubuntu, but there are several) as the android platform is linux based. I use Gentoo myself.
Gene Poole said:
You need to become proficient in C/C++ and all the rest will fall into place. I recommend the linux platform (you mention ubuntu, but there are several) as the android platform is linux based. I use Gentoo myself.
Click to expand...
Click to collapse
agreed about c/c++, if you are proficient in c/c++ most if not all other languages will fall into place. its not about the language though but rather the theory and principles behind the languages. I suggest c/c++ because imo if you get c/c++ you get all the others.
Gene Poole said:
You need to become proficient in C/C++ and all the rest will fall into place. I recommend the linux platform (you mention ubuntu, but there are several) as the android platform is linux based. I use Gentoo myself.
Click to expand...
Click to collapse
Oh yeah, I agree here as well. In general, Linux is definitely good for learning programming on. All the tools are *free* (most of my college classes dealt with the Linux platform for this reason). Also, at least on Linux, I have not had problems getting ADB to recognize my device. On Windows, I did get my system to recognize my device, but it definitely took longer.
(Using OpenSuSE for my Android development).
Actually, unlike these spectacular developers, I recommend you learn Java. Android IS coded in JAVA and it is an object oriented programming language, which is in many ways VERY different from C/C++.... Then start going through demos of other Android applications till you can read the code and understand what it is doing.
It finally makes sense why Android developers are so far behind the rest in app development....... college degrees would help.
what happens if I learn java, c/c++
mynameisvineeth said:
what happens if I learn java, c/c++
Click to expand...
Click to collapse
I'm not sure what the question is here... Are you asking what you should do after learning those, or for more opinions about which you should start with?
Anyway, the best thing would be to take a computer science course. That way you'd learn all the fundamentals of computer programming as well as specific languages. If you can't do that, you can always just teach yourself. For example, I took a few basic programming classes (e.g. a few hours a week for 10 weeks "Introduction to C") but after that, everything I learnt was self-taught in Java using the Android SDK. I've been working at it for about a year now, and published my first app 6 months ago which has been selling slowly but steadily, so it can be done.
There are many many resources online you can find, as long as you have the patience and time to read everything. The two best places to learn things from are the official developer's guide and Stack Overflow; Stack Overflow is a question and answer site for programmers.
if I learn the three languages in the collage can i devolep apps.
my aim is to become an good android software engineer so please anyone suggest which course should I take in the university such that my future will be bright with google.
mynameisvineeth said:
if I learn the three languages in the collage can i devolep apps.
my aim is to become an good android software engineer so please anyone suggest which course should I take in the university such that my future will be bright with google.
Click to expand...
Click to collapse
You don't need to learn all three languages. I would personally learn Java first since it's excellent to learn basic programming concepts in and techniques and it is the main language used for developing Android apps. C/C++ should definitely be learned at some point if you want to work for Google, but you'll need at the very least a bachelor's degree before you get to that point. If you get to that point, I am sure you will have learned C/C++.
I do OK under Windows, but I recommend Linux if you can. USB drivers and I was good to go. Java is great, seems dauting at first. I would get java first. But once you know, you like it. At least I did. Makes it more difficult to make a mistake, IMO.
Of course, I'm just starting. Listen first to the extremely advanced people that post here.
Good luck!
is computer science good for me?
Depends I know a few Computer science schools where they teach PASCAL I don't think 4 years of PASCAL will be usefull so it kinda depends what classes are given there. Don't you have a summary of what classes you get at that computer science school? and furthermore computer science can be useful but I don't think you have to know what hardware is in a computer to create an android app.
SterAllures said:
Depends I know a few Computer science schools where they teach PASCAL I don't think 4 years of PASCAL will be usefull so it kinda depends what classes are given there. Don't you have a summary of what classes you get at that computer science school? and furthermore computer science can be useful but I don't think you have to know what hardware is in a computer to create an android app.
Click to expand...
Click to collapse
You have no idea what you're talking about. A computer science degree is not about what language you learn and how to program. It's about the concepts of computer science. It doesn't matter what language a computer science program uses. It has everything to do with the conceprd you learn to apply to programming.
Sent from my GT-I9000 using XDA App
If you wanna work on Android, start with an app instead of trying to work on the framework. You'll learn a lot more, much faster.
It sounds like your definition of a computer science degree is closer to what I'd call "computer theory".
Q: What's the difference between theory and practice?
A: In theory, there's no difference between theory and practice.
Yes, learning threading concepts (for example) in one language will carry over reasonably well to another... but you'll still need to learn a new API, and no two APIs are conceptually identical. Actually being familiar with a given language/API/OS/IDE out of the gate is a pretty big deal when it comes time to Actually Get Hired... or just doing stuff on your own with It (whatever It might be).
I was going to start a new thread with the following post, but I think my questions fit with this thread...
"I have a scientific/technical background and know some networking and Linux basics (i.e. enough to set up a very functional home server with SFTP, Samba, DLNA server, etc from Ubuntu/Deb packages), but I have very little computer programming training.
Where is the best place to start if I would eventually like to develop Android apps?
Should I focus on programming fundamentals with Java as the main programming environment or step right into the Android SDK with Eclipse?
Any links to recommended tutorials and lessons would be greatly appreciated too.
Thanks!"
It sounds to me like Java is the best language to use when learning programming fundamentals if the intent is to develop Android apps in the future. Links to recommended educational resources would really make this a valuable thread.
@ChiefNugget: Please learn first Java and then if you have understood the basics take a look at the developer.android.com site. You should buy a good Java Programmer Book Click
Couple of things to get straight here:
1. "Android" is written in C++ - This is the OS of the phone, it's not written in Java - if you want to be big like Cyanogen you'll need to know C++ very very well. *Sidenote: EXCITED FOR GINGERBREAD CODE TO DROP SOON*
2. Java is not a compiled language (why no OS is written in it) it is a "Interpreted" language meaning that there is very little change from what you type to what the JVM (Java virtual machine, in our case "Dalvik") actually interprets and runs as "Java Byte Code"
So it depends what you want your concentration to be in, if you want to write machine level code - hit up the C++ side of things, if you want to write Apps - java is where you should go.
How ever, I recommend to anyone who wants to become a developer, learn C++ before you learn anything. It's difficult for a reason - it makes you better in the end when you understand how memory is managed and why you shouldn't do things that lots of developers do.
Kcarpenter said:
Couple of things to get straight here:
1. "Android" is written in C++ - This is the OS of the phone, it's not written in Java - if you want to be big like Cyanogen you'll need to know C++ very very well. *Sidenote: EXCITED FOR GINGERBREAD CODE TO DROP SOON*
Click to expand...
Click to collapse
And linux is written in C.
Kcarpenter said:
2. Java is not a compiled language (why no OS is written in it) it is a "Interpreted" language meaning that there is very little change from what you type to what the JVM (Java virtual machine, in our case "Dalvik") actually interprets and runs as "Java Byte Code"
Click to expand...
Click to collapse
That is quite debatable. Between "javac", and JIT compilers, java code does indeed get turned into machine code. And "compiling to bytecode" is still has a valid meaning. When I think interpretted languages, I think "no code is checked until it is executed". You find out about syntax errors when you run it, not when you hit the "build it" button on your IDE.
Kcarpenter said:
How ever, I recommend to anyone who wants to become a developer, learn C++ before you learn anything. It's difficult for a reason - it makes you better in the end when you understand how memory is managed and why you shouldn't do things that lots of developers do.
Click to expand...
Click to collapse
Oh, granted. With java you ALMOST don't need to know what pointers are... but what's left will HANG YOU if you're not careful.
GC's spoil you. Kids these days! Why when I was your age... Anyway, getting into the habit of releasing memory early on means closing files and other resources is likewise well understood. Someone learning java only runs into resource management later on... "stunts their growth" as it were... like Europeans and fractions (metric vs Seemingly random combinations of units).
Get off my lawn!

to develop or not to develop?

hiya there, im a complete noob to the developing software, well android for that matter. i see post after post of people developing and i just want to learn how to do it myself. you always appreciate things more if you know how they developed and the hard work gone in to them.
so please share the developing love and share your knowledge.
also are there any books available that may help?
many thanks
If you don't know java, you need to learn that first. There's always a dozen or so threads here every week with someone wanting to know where to start. So look at one of those for suggestions on websites and java books.
If you already know java, then go to the link below and read everything and work thru the tutorials.
http://developer.android.com/guide/practices/compatibility.html
Most people use Eclipse as the development tool. You can find some information on setting up Eclipse in my blog.
________________________________
http://ron-droid.blogspot.com
thank you buddy just wanting to contribute to the android world
If eclipse isnt your cup of tea then try Intellij. I find it much better than eclipse. The code completion, generation and analysis is top notch
From something awesome
Cheers I will try that out
Sent from my Desire HD using XDA App
I would recommend starting with Android App Inventor.
It's a relatively simple way for non devs to get started developing for Android.
I have decades of dev experience but a few months ago I was new to Android, and pretty new to Java,
AI allowed me to quickly jump into Android dev.
Unfortunately it's difficult to make a professional app using AI, so now I use the SDK and NDK, but much of what I learned in AI was transferable to the SDK/NDK environment.
Also, look at Droid Draw. It lets you drag and drop objects to create relatively simple apps. The advantage is that you can then review the java and xml files (the code behind what you created) that Droid Draw generates. There are different ways to learn...I like the "by example" way.

[Q] Suggestions for tablet app dev tools?

I'm looking for a simplified approach to tablet development for the a500. I'm currently looking into flash builder ( seems like I need the full Adobe suite to really leverage it, so too much $ ). I'm dabbling in Eclipse, but am not too psyched about learning a new IDE. I grabbed the Mono for Android trial but it's not really ready for tablets as of yet. I've been building in the Buzztouch interface, exporting and recompiling in Eclipse with some success, but it's really not tablet focused. It seems like the app Inventor isn't ready for tablets either.
Has anyone encountered a tablet-centric toolset out there? I'm looking for only very simple functionality, nothing elaborate needed. Honestly, if it even supported simple HTML iFrames I could get by with it. I'm fine with web based tools if needed, maybe something with templates for the Acer, Xoom, and so on... I can work in VS 20xx, Eclipse if I have to. any suggestions would be really appreciated. thanks!
My suggestion is to use eclipse and official SDK. Because when you use third-party tools or workarounds like flash/htlm, your apps look non-native, break when the user updates his device with a newer os and. It causes a lot of frustrations - people hate such apps and recommend all their friends not to use them. At least I always do.
So I advise you to learn java and eclipse. You may even have to use these tools from time to time not only for android because java no matter how it sucks is everywhere. Besides, you get a lot of advantages when using sdk and java api like saving settings, gettinge events like app close/hibernate and so on. The learning curve may differ from flash but java is certainly much more useful. Although given that you know C# (as you're suggesting mono) and javascript/actionscript (as you're using flash) learning Java will be easier, although Java is corporate crap built on spike solutions and rejecting progressive stuff.
Actually you should ask mods to move this thread to android development or off-topic. I am sure you more people will share their opinions on the matter there
thank you for your reply... you are right, the smart thing to do is stop whining and learn the tools C# C++, flash ... I guess the idea of having to learn something else isn't the end of the world, but I was hoping a toolset would lighten the load a bit. thanks again
angus454 said:
thank you for your reply... you are right, the smart thing to do is stop whining and learn the tools C# C++, flash ... I guess the idea of having to learn something else isn't the end of the world, but I was hoping a toolset would lighten the load a bit. thanks again
Click to expand...
Click to collapse
pssst.. hit that thanks button for sp3dev.
angus454 said:
thank you for your reply... you are right, the smart thing to do is stop whining and learn the tools C# C++, flash ... I guess the idea of having to learn something else isn't the end of the world, but I was hoping a toolset would lighten the load a bit. thanks again
Click to expand...
Click to collapse
I don't think his suggestion was for you to learn C / C++ or flash. Based on your OP, he figured you might know them well and that knowing them might help ease the learning curve learning Java. You will still have to learn it though.
As he rightly said, for an uninterrupted user experience, always stick to the native development tools. No easy way out unfortunately.
you know, I should just write the program myself and release it up here for others to benefit from... thanks for the thank reminder; done!

C# programming - anyone use Xamarin?

Has anyone used Xamarin to build their android apps? I have been programming using C# for sometime now but have never used it to build anything for android.
They have tons of free libraries, but as for licensing, I am skeptical in purchasing. Anyone like or dislike Xamarin? If you do or do not, can you explain why? Thanks a bundle!
Haven't used it but you have to think whether it's worth the price. The advantage is you can write in C# and share code between Android/iOS. However the UI is still platform-specific, so it has to be implemented twice. A free alternative is to use C++ for shared code (Android: via NDK, iOS: compiles directly), but that definitely needs more initial setup effort than buying Xamarin's product.
Here is an informed opinion
There is a gaming studio that used Xamarin to port their WP stuff to Android and iOS, and they're quite happy with how it turned out.
Do a search for "FourBros Studios, Cross-Platform Game Development with Xamarin and MonoGame". I can't post a direct link because of forum rules here.
Of course games are entirely different beasts than regular apps (for example, UI-wise), so not everything may apply to your situation.
I've plaid with Xamarin... and its a good system.. but Is it worth $300 to not learn java?
Cross platform development tools have their place, but IMHO unless you have a large project and NEED a cross platform development tool you are hurting yourself by not going native.
Just my .000002c
Java is so similar to C# I would think you'd be fine just going native - in terms of syntax they're virtually identical. I do kind of miss the var keyword though lol
I agree with LostByte - there's no real point to going cross platform unless you really need it. Don't stay with C# just because it's what you know! Use what's most appropriate for the app

Categories

Resources