Forum Visual Studio

Xamarin Studio vs. Eclipse vs. Visual Studio vs. Android Studio

well folks,

I'd like to share a little journey I took for the past week.

I've been writing code for the desktop for over 20 years now and use C-family and Visual Studio most of the time.
This year, I want to try something new.
I want to get into Android and possibly other mobile app platforms.
And so, I am evaluating different IDE and platforms.

Mainly, I'm testing these four: Xamarin Studio, Eclipse, Visual Studio and Android Studio.

let's start with the IDE that got crossed out from the list real quick.

Visual Studio:
Visual Studio mobile SDK won't work in Windows 7.
it needs Windows 8.
so, Windows Phone app development is out of the way for now...until I get Windows 8 machine.

Android Studio:
after many crashes with Xamarin Studio (build 54), it forces me to look at alternative solution.
Android Studio seems like a good candidate.
but, it's being beta means it's very unstable.
for now, Android Studio is not ready for real development.

Eclipse:
next, I tested Eclipse for Android.
very stable but running the emulator for the first time for the first time Android coder might be a bit a daunting task!!
nonetheless, Java has come a long way since I tried it in 1998!!
today Java, I found numerous samples, tutorials, etc. which it can get me up to speed really fast!!

and so for this testing purposes, I want to develop a simple calculator.
this allows me to be familiar with the classes, events, GUI, etc.
I got my calculator to work with Eclipse in about 10 hours of coding, reading documentation and learning a lot of stuff along the way.

so, I'm at a cross road to make a decision.
which IDE shall I be learning to develop real app?
I like Xamarin because of C# and code readability.
however, because my main goal is Android, Eclipse might be my top choice after all.
video tutorial is the future of learning but Xamarin video tutorials are scarce. :-(

thanks for reading.
happy coding!!

«1

Posts

  • mhutchmhutch USMember, Xamarin Team Xamurai

    Disclaimer - I work on Xamarin Studio so I naturally like it the best - but I can point you at a few resources :)

    The Xamarin Docs site does have some videos in addition to the conceptual docs. There are also many session videos online from our Evolve 2013 conference. We also offer online, instructor-led classes in our Xamarin University program.

    Also, note that because Xamarin exposes a C# mapping to the native APIs, a lot of the knowledge is directly transferable both ways. For example, if you learn how to use the Android.App.Activity class in C#, then you will be able to use it in Java. And the knowledge from Java docs and examples maps very easily back to C#.

  • bob2014bob2014 USMember

    hi Mike,

    yes, I did go thru Xamarin doc area. if I'm not mistaken, most of the video tuts are for the iOS.

    example, I need to parse myEditText to integer using Xamarin.
    have no clue how to do it.
    look in the doc.
    EditText is not listed in the doc.
    did the search in Xamarin doc area, "parse string to integer".
    no result.
    try another search phrase, "convert editText to integer".
    no luck either.
    search Bing.
    no luck.

    ok, let's switch over to Eclipse for Android.
    type in the above search criteria.
    boom!!
    found it in Bing and in Android doc area.
    included sample codes.
    perfect!
    of course, those are just snippet.
    but, for someone who knows how to read/write code, that's enough to continue.

    anyhow, I think Xamarin is a great idea.
    write once and we get to reuse the code in other platforms.
    however, in my case, I'm going to concentrate in Android.
    to get up to speed, I think I just need to be familiar with the classes and a few new syntax with Eclipse, I shall be productive in no time.

    when I'm using Xamarin, I was thinking all my C# skill will be transferred over.
    example, if I need to parse string to integer, I was thinking I can do this in Xamarin:

    int n1 = int.Parse(editText1.getText());

    nope. no can do.
    and soooo...I was thinking....
    if I have to spend $2,000 annually for Xamarin.Android & iOS and another $2,000 for training, not knowing if the product ever recoup the cost, that's a tough sale.

    on the other hand, Eclipse is free and very stable...so far.
    although, it's a bit slower than Visual Studio but given the cost of Eclipse, I don't have the right to complain, right? :-)
    now, if my product makes some serious dough because of Eclipse, I might be porting it to another platform.
    oftentimes, the majority of the app doesn't make crap.

    so, here's my suggestion to Xamarin team.
    forget about Xamarin Studio.
    put all of your energy into Visual Studio.
    make the product stable and ahead of its competitors.
    you already got a niche.
    exploit it.
    divide the license fee into 5 areas:

    1) free for app of any size but with some missing features (similar to Visual Studio free edition)...the developer who made money using the FREE edition wouldn't mind upgrade to get more features and also to support Xamarin. heck, if I made a few millions using Xamarin, I wouldn't mind donate some to Xamarin.

    2) $99 for student -- open up more features than #1 above

    3) $200 for single developer -- get all the features similar to VS Pro.

    4) $1,000 for company developers -- similar to VS Ultimate.

    5) additional fee for email support or phone support (can be per incident or annual subscription).

    let's do a rough math.

    $200 for single developer.
    if you can get 500,000 .NET developers onboard, that's $100 million annually!!!
    seriously, I think Xamarin team would be smiling every day for $100 million annually!!
    you can get a team of 100 programmers to improve on the product.
    given each programmer a salary of $100,000 annually.
    you still left with $90 million for profit and other expenses.

  • SteveFlackSteveFlack GBMember ✭✭

    AFAIK

    var n1=int.Parse(editText1.Text);

    does exactly what you were wanting to do.

  • bob2014bob2014 USMember

    I wish it would.
    that will save me a lot of agony.

    instead, I got an error that said, "The name 'editText1' does not exist in the current context."

    when I drag & drop the EditText from the Toolbox to the canvas, I left it as default ID which is the "editText1".

    when I build the project, that's the error I got above.
    of course, it would be nice if we click on the error and it takes us to a documentation on how to fix the problem.
    now, that's definitely worth the $2,000 annually fee!! :-)

  • SteveFlackSteveFlack GBMember ✭✭

    The code doesn't know about the stuff in the xml unless you locate the view in the inflated xml and assign it to an ivar. This is the same as in developing for Android using Java. You can't do what you're trying to do in Java either.

    With Xamarin you still need to know how Android works - you're just coding for it in C#.

  • bob2014bob2014 USMember

    you see, what attracted me to Xamarin is C#.
    so, if the code is legal in C#, let say...

    int n1 = int.Parse(editText1.Text);

    I was hoping it's legal in Xamarin.Android as well.
    but, it's not.
    so, I'm thinking...
    ok, I need to understand the classes and properties.
    I'm thinking the code below shall work in Xamarin.Android.

    int n1 = int.Parse(editText1.getText());

    heck, I can live with the code below if it works:

    int n1 = integer.Parse(editText1.getText()); //this is not C# at all

    the problem is 'editText1' is not global unlike what I used to do in Visual Studio.
    all the components in the Toolbox are global when you drop it on the canvas.
    but, it's not the same in Xamarin.
    I can understand it's not the same in Eclipse since it's a completely different animal.

    so, for this scenario to work, I need to use findViewById(R.id.editText1) and do a bunch of other stuff just to convert the input to integer.
    as a result, I ended up writing a lot of code just to do a mundane task.
    where in the real C#, you can convert user string input to integer in one line of code.

    in other words, if I need to read a lot of docs, classes, properties, write a lot of extra codes, etc., what's the advantage of using Xamarin over Eclipse?
    I don't see the advantage at all.

  • SteveFlackSteveFlack GBMember ✭✭

    If you're writing for one platform, then you may as well stick to the native language. There's fewer "moving parts" to go wrong and ultimately it's cheaper. Unless you're wedded to C# then "native" is the way to go in that case IMO. Stick to Java/Objective-C /whatever.

    If, however, you would like to target multiple platforms and share a lot of code writing your app in Java isn't going to get you very far on iOS or Windows Phone. I'd rather having one codebase with relatively thin UI shims on top than three totally separate codebases.

    Xamarin doesn't excuse you from knowing about your target platforms. Some see that as a weakness but you could see it as a strength. The bits your users see look "right".

  • bob2014bob2014 USMember

    since I can't get Xamarin to add two numbers from the TEXTBOX, I'd like to see how you do it in Xamarin.Android.

    here's C# in VS for desktop app.
    2 line of codes to get the answer and display the result to screen.

    //perform conversion and calculation

    int answer = int.Parse(textBox1.Text) + int.Parse(textBox2.Text);

    //show the result to screen

    label1.Text = answer.ToString();

  • EidandEidand GBMember, University ✭✭✭

    you have very good points related to license and pricing. It's pretty much what I've been saying all the time. Xamarin indeed is a good idea but the price makes is impossible to get into.

    The huge minus is the bugs, I found it impossible to build even the simplest app since something crashes somewhere all the time. It's basically a very expensive alpha quality product.

    Xamarin concentrates on hoe to get the most money from us first, instead of delivering a quality product which makes developers want to get into and use. I've also been saying, make it a lot less expensive so anyone can afford it. A large number of developers all paying small amounts is a lot better than a few paying loads. It's simple maths especially in a world where most development tools are free.

    My position was : do I really want to buy licenses ( expensive ) for something that is unusable ? I am not a beta tester, I am a professional developer and I need to be productive fast.

    I need something that works and if there is a bug here and there fine, but not in the areas that are actually important. If other devs want to be cavalier about their own time, that's fine, but not at my expense.

    My company needs something like this and would pay for it. I cannot go to them and recommend we buy Xamarin until we have a stable versions.

    If I download Visual Studio I am working right away and making things right away. If I download Xamarin I have to fight with code checking licenses etc. Xamarin assumes we're all thieves and as such thinks it needs to check for licenses even when you build. That's ridiculous. This is not development related it's a check that should not even be there.

    I am still waiting for the day when Xamarin realize these simple truths. That's when the real acceptance will happen. Until then it's just a waste of time, every now ad then, to see if it works or not.

  • rmaciasrmacias USBeta, University ✭✭✭✭✭

    Bob, I'm not understanding what is so hard about parsing a string into a number. It's C#. You do it exactly the same way as you could do a desktop app. Int.Parse() is one way. I think the issue your lack of understanding the difference between Windows desktop controls and Android Controls. They are different, and you access their values differently. There's nothing Xamarin related here. Just C# and Android controls. You'll find it's the same way in Java.

  • bob2014bob2014 USMember

    @Andrei:
    I'm in the same boat as you.

    @Ruben:
    Android has a EditText control with type integer, double or string.
    I'm using the integer. Hence, I was thinking, I don't need to do any conversion if it's already an integer.

    so, I'm thinking...something like below shall work:

    int answer = editText1 + editText2; //no luck here

    hmmmm....let's try this then:

    int answer = findByViewId(R.id.editText1) + findViewById(R.id.editText2); //no luck either

    I would think the 2nd code above would work eventhough it's not exactly C# anymore, now, it looks more like Java.

    ok, let's try something different like below:

    int answer = ((int)findByViewId(R.id.editText1) + (int)findByViewId(R.id.editText2));

    the code above makes no sense.
    findByViewId is something Android needs to access the object editText1.
    findByViewId is an object.
    cast it to integer and then perform the calculation.
    man! what a mess in coding.
    we're not in C# land anymore.
    of course, all of the above snippet doesn't work for me.

    Ruben, if you don't mind, I'd like to see how would you add 2 numbers if editText is an integer type already.

  • SteveFlackSteveFlack GBMember ✭✭
    edited February 2014

    EditText is NOT an int, double or string. It is a subclass of View.

    FindViewById returns a View instance - you can cast it all you like, it's still not an int. Resources.Id.EditText1 is an int but it's only an identifier that is used to look up the View - other than that it has nothing to do with the View or what it contains. So you need to look up the View (you can cast this to an EditText if it is one), then you will need to get the text out of it using its Text property, then convert that string with Parse (or better TryParse).

    var editText=(EditText)View.FindViewById(Resources.Id.editText1); var value=int.Parse(editText.Text);

    You really must forget how desktop C# programming works for this. Both iOS and Android use different paradigms and stubbornly refusing to acknowledge that is going to get you nowhere. The Xamarin APIs map very closely to the native APIs and that is IMO a good thing.

  • rmaciasrmacias USBeta, University ✭✭✭✭✭
    edited February 2014

    Bob, Steve beat me to it. The issues are due to your lack of understanding on the types you're working with, and your incorrect assumptions. The same concepts apply to C# desktop apps. As Steve said, you're not working with int, double, or strings. You're working with View types. It's basic programming 101.

    But to make Steve's answer a little more robust, you could do something like:

    var editText = FindViewById<EditText>(Resources.Id.editText1);
    if(editText != null)
    {
      var value = int.Parse(editText.Text);
    }
    
  • bob2014bob2014 USMember

    thanks for the snippet guys.

    @Steve: thanks for the explanation. exactly what I needed.
    I tried your snippet.
    it doesn't work.
    see attached jpg, "Xamarin_FindViewById.jpg".

    @Ruben:
    your code doesn't work either.
    I tried it in Xamarin 4.2.3 (build 59).
    see attached jpg, "Xamarin_FindViewById2.jpg".

    I like both of your programming style.
    syntax wise, it makes perfect sense.
    I have no problem adapting to it.
    sadly, both of your codes don't work.
    and hence, my frustration.

    btw, the pop-up hint in JPG1 went off screen.
    my PC uses 2 monitors.
    I assume this is a bug in XS?

  • rmaciasrmacias USBeta, University ✭✭✭✭✭
    edited February 2014

    @bob2014, that was a typo on my part. It should be Resource and not Resources. Again, programming for Android (or iOS) is different from C# desktop apps. You just need to learn the fundamentals of each respective platform.

    • Note: Resource.Id.* will display all your controls you have in your layouts (it comes from Resource.Designer.cs). So whatever you named your EditText will show up in this list.
  • bob2014bob2014 USMember

    Ruben, I got a bit further with your help.
    but still cannot add the two numbers.
    I got my GUI in the emulator.
    input a number and press the button.
    bam! crash.
    the crash didn't tell what went wrong.
    so, I don't know where to look. :-(
    tried to debug the code but it seems like XS debugger is not the same as VS.
    another thing I need to learn as well.

    anyhow, can you take a look why below code compile ok but crash when I click on the button?
    I'm guessing it's something to do with the button event.
    I already added "on_clicked" behavior for button1.
    is something else I need to wire for the button to fire correctly?

    below is my code:
    public class MainActivity : Activity
    {
    int count = 1;

        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);
    
            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);
    
            // Get our button from the layout resource,
            // and attach an event to it
            Button button = FindViewById<Button> (Resource.Id.myButton);
    
            button.Click += delegate {
                button.Text = string.Format ("{0} clicks!", count++);
            };
        }
    
        public void on_clicked(View view)
        {
            int extra = 10;
            int answer = 0;
            int value = 0;
            TextView tv;
    
            /*******************************************************
            var et = FindViewById<EditText> (Resource.Id.editText1);
    
            if (et != null) {
                 value = int.Parse (et.Text);
            }
            *******************************************************/
            answer = value + extra;
    
            tv = (TextView)FindViewById (Resource.Id.textView1);
            tv.SetText (answer);
        }
    }
    
  • rmaciasrmacias USBeta, University ✭✭✭✭✭

    My guess is that you wired up the event handlers wrong. That's my guess since I see that you've already got a delegate assigned to the button.Clicked assigned already. You're method signature on_clicked(View view) is wrong if you intend that be your event handler. I'd strongly recommend going through the tutorials on docs.xamarin.com because it looks like you're a little confused on how Android and the AndroidSDK works. But take a look at the code below. This should wire everything up correctly.

    public class MainActivity : Activity
        {
            int count = 1;
    
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
    
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.Main);
    
                // Get our button from the layout resource,
                // and attach an event to it
                var button = FindViewById<Button>(Resource.Id.myButton);
                if (button != null)
                {
                    //MyButtonClicked is the method that will be called when 
                    //your button is clicked.
                    button.Click += MyButtonClicked;
                }
            }
    
            void MyButtonClicked (object sender, EventArgs e)
            {
                int extra = 10;
                int answer = 0;
                int value = 0;
    
                answer = value + extra;
    
                //Find the TextView called "textView1" from our Layout
                var tv = FindViewById<TextView>(Resource.Id.textView1);
                if (tv != null)
                {
                    //tv is an instance of the TextView Control.  It's an object with
                    //many properties.  If you want to gain access to it's Text value, 
                    //then call the .Text property.  Just like you would in a Label or
                    //TextBox from a C# Desktop / Web App.
                    tv.Text = answer.ToString();
                }
            }
    
    
        }
    
  • bob2014bob2014 USMember

    hi Ruben, it works!!
    thanks to you.

    a couple things I noticed that I'm far away from home!!

    I accidentally put two ;;

    Xamarin Studio compiled the project just fine.
    yikes!!

    in the IF statement, {} is always required even for a single line of code.
    example,

    if(true)

    do_this;

    else

    do_something_else;

    the above code is ok in Visual Studio but not ok in Xamarin Studio.
    not a biggie but nonetheless, a lot of stuff I have to learn in XS.

    what would be really neat is that if we double click on the widget like the BUTTON, the event handler creates automatically with the stub ready for coding like VS.
    now, that would be cool.
    less coding and keeping the programmer concentrates on the business logic than worrying about the syntax.

  • rmaciasrmacias USBeta, University ✭✭✭✭✭
    edited February 2014

    Yeah, that's the thing about designers. They are a good convenience, but sometimes the programmer does not understand what is going on underneath the hood, which really isn't that difficult. A side effect of that is you get a lot of people who really don't know what they're doing.

    As far as the if statement:

    if(true)
      do_this;
    else
      do_something_else;
    

    That is syntactically correct and should compile. Granted the else part will never execute, but there should be no problems with that code. It has nothing to do with Visual Studio or Xamarin Studio. It's part of the C# specification. Can you be more specific on what "doesn't work"?

    Using the braces {} is only required if you have multiple lines. It's just my preference to always put the braces.

    Also ";;" is syntactically correct also. The semi-colon ";" just denotes the end of a statement. So if you have:

    button.Text = "Hello World";;;

    That is just fine, because the first semi-colon terminates the statement. The next two terminate "blank" statements, so they don't really do anything. Though they are unnecessary, it is syntactically correct and does not cause a compile error. Again, this is in the C# specification and nothing to do with XS or VS.

  • bob2014bob2014 USMember

    Using the braces {} is only required if you have multiple lines.

    guess what?
    it's working now.

    earlier today, it wasn't working.
    when I removed the {}, the code doesn't compile for a single line.

    do you know any Xamarin sample that shows the code in iOS, Android and Windows Phone?
    in other words, if I write a simple calculator for Android, how much changes for iOS and WP.
    of course, before I explore the new world, I would love to see a more experienced XS user on how to do this stuff.

    I know if I go the Eclipse route, it will be 0% reusability to another platforms.
    thus, I'm trying to see and understand the advantage of Xamarin compare to....let say Eclipse or Android Studio.

  • mhutchmhutch USMember, Xamarin Team Xamurai

    @bob2014: for a large sample of building an app for three platform, try Field Service. For a smaller sample, try TaskyPortable and its case study.

    There are some conceptual docs on code sharing and portable libraries. There's also an Evolve video on the topic.

    (Be aware that although you can open the solution in either Visual Studio or Xamarin Studio, not all the projects in the solution can be loaded on all platforms. XS cannot open iOS projects on Windows, and cannot edit Windows Phone projects on Mac or Windows.)

  • bob2014bob2014 USMember

    hi Mike,

    thanks for the link.
    just finished reading your provided URL above.
    very interesting stuff.
    Xamarin is like a programmer's dream comes true.

    my only suggestion is....after the theory write-up, re-enforce the written material with a simple live code demo.
    example, show us not only in written form but in video tutorial on how to build a simple calculator in all 3 platforms.
    that would be an excellent training material for the new comers like me and plus it helps Xamarin sell.
    remember, you can have the best product in the world but if the customer is not convinced, they won't spend their hard earning $$. one quick example for ya....Motorola got the best darn phone. you can call from anywhere on the globe!! so, what happened? you guess it. it didn't survive. the division got sold to the Pentagon.

    if I see a lot of codes are re-usable, I might not too hesitate to spend the money for the asking price.
    so, for the 21st century classroom/training material, write the theory but follow with a demo videos.

    this is the situation I'm in right now....
    I never play with mobile development before.
    but after playing with Android SDK for a little over a week, I think it's not difficult to pickup.

    what have I learned so far?
    I spent the first week testing different IDEs.
    this week, I'm learning about the native classes and syntax.

    on the Android Eclipse camp, I learned the following:
    1) event handlers
    2) error handling
    3) camera access
    4) geolocation with GPS access
    5) store data in local memory and external SD
    6) intent and activity
    7) understood EditText is always a string data type similar to TEXTBOX in C#.
    8) emulator is painfully slow even on a fast i7 machine.
    9) unbelievable amount of video tutorials almost on any subject

    next week schedule, stuff to learn:
    1) access web api running on my server and 3rd party server
    2) using 3rd party web services
    3) obfuscation (not sure if possible in the Java/Android land)
    4) save data to local and remote database
    5) mediaController and gridview

    Java and C# born around the same time and thus a lot of similarity; thus, I think it's not difficult to pickup Java at all.

  • bob2014bob2014 USMember

    btw, I shall add one more thing....

    about 16 years ago, I play with Java.
    I want to access CD-ROM and play the music disc.

    holy smoke! talk about craziness!
    the compiler was slow.
    there was no IntelliSense.
    document was scarce.
    yes, I got my media to work but a lot of unnecessary codes...about 2 pages of coding to be exact.
    hence, I never look back at Java since then until now.

    meanwhile, I can come over to the Visual Studio land.
    I can play the music CD from the computer in about 5 lines of code!!!

    now that I'm playing with Java Android SDK, I see the same thing like 16 years ago.
    just adding 2 numbers required a lot of setup by the programmer.
    stuff that should be handled by the IDE.
    IntelliSense is slow in Java land.
    VS gives you a quick pop up documentation with the dot operator.
    anyhow, VS got over 30 years to perfect their tools compare to Eclipse is just over a decade.
    so, understandable about the differences.
    that's why when I see Xamarin Studio, my first thought is....why re-invent the wheel?
    you have the knowledge to create the extension.
    put your full energy in that and charge a reasonable fee for your work but not too exuberant.
    do you think Java is as famous as it is today if it weren't for its price tag?
    I think not.
    there's absolutely nothing Java can do that the C-family cannot.
    the only reason you see the mass exodus is because of the price tag of Java.

  • rmaciasrmacias USBeta, University ✭✭✭✭✭

    stuff that should be handled by the IDE

    Welcome to the mobile development world. Once you gain experience in this new paradigm you'll understand why things are the way they are. Some things definitely could use improvement and need maturation, but other things that make sense and that you've grown accustomed to in the desktop world do not apply or make sense in the mobile world. Don't get into iOS development just yet. Your head will explode. :)

  • bob2014bob2014 USMember

    I programmed assembly and embedded hardware before. so, I know about low level language and its limitations.

    my thing with Xamarin and what attracted me to it is the C# and VS.
    this is what I think...

    in the Android world, there's EditText.
    in the desktop world, there's TextBox.
    they are the same stuff but with different alias.
    so, I was hoping...clicking on the BUTTON would wire up the event for me.
    do I need to know how it was done behind the scene?
    sure.
    but when it's time to write production code, I don't really care.
    for the same reason I don't care about the compiler converting the high level language to machine code.
    that's the IDE/compiler job.

    if it takes half a page to setup the event, to me, too much time is wasted.
    that event handling is a repetitive task and anything repetitive shall be done by machine and not human.

    take EditText (Xamarin.Android) and TextBox (desktop), for example.

    why can't int.Parse(editText1.Text) works the same way as int.Parse(textBox1.Text)?

    I can understand Android needs to parse the XML which has to be done by the programmer.
    but, that's my point.
    there's no other editText1 allowed on the canvas.
    the ID has to be unique.
    so, why the programmer needs to tell where it is?
    that makes no sense to me.
    why can't the IDE go find it?

    my point is....the IDE shall be done most of the repetitive lifting for us.
    the programmer shall be concentrating on writing the business logic.

    well, once I got Windows 8.1 machine, I will be playing with Windows Phone in Visual Studio.
    let see if it's the same craziness as Android.
    btw, I never write for Windows Phone before.
    last week, I was able to use the online IDE, retrieve video channels from YouTube, make clicking events and load the video list to Windows Phone emulator.
    all of that done less than 30 minutes for someone with zero experience in mobile development.
    I thought that's amazing tool and truly 100% C#.
    what do I need to learn for Windows Phone?
    not much.

  • bob2014bob2014 USMember

    thanks to you, Ruben, and Steve. now, I have a clear understanding of VS, Eclipse, and XS.
    now, I know which direction I need to go.

    as I'm currently working on production code with Eclipse, I miss VS color code.
    bam! somebody already got the schema for it.
    done!
    now, Java keywords, classes, methods and variables look exactly like VS.
    oh wait....I missed that #REGION in C#.
    bam! somebody else already went thru the exact same problem and solved it.
    so now, my Eclipse looks and feels like VS. :-)

    I figured....if my goal is Android, Eclipse probably the best candidate for me.
    it has been tested by the Android team plus millions of other users.
    so, whatever the problem I'm going to have, someone else most likely already went thru it and already got a solution for it. thus, why bother re-invent the wheel, right?

  • SKallSKall USMember ✭✭✭✭

    C# has its benefits over Java but if you don't plan to do anything with WP or iOS then might as well go with Java.

  • bob2014bob2014 USMember

    I realized I might have to relinquish LINQ. let see when that time comes, if it's bad enough for me to come back to Xamarin. :-)

  • JuhaJuha FIMember

    Bob, on a related note, make sure you get Windows 8.1 Pro or Enterprise edition. AFAIK the Windows Phone emulator requires Hyper-V, which is not available in the vanilla 8.1.

  • SKallSKall USMember ✭✭✭✭
    edited February 2014

    Bob, are you familiar with INotifyPropertyChanged and Model-ViewModel-View (aka MVVM) design pattern? IMO this is where Xamarin shows great benefit over going with Java. Since you know Windows you could first draft a Windows application with WPF or even WinForms and connect it to a ViewModel implemented in a PCL library. Then figure out how to hook an Android UI to it, followed by WP UI and iOS UI. With this approach creating the same functionality with a native UI on different platforms becomes a breeze.

  • bob2014bob2014 USMember

    @juha: I just received Windows 8.1 Pro disc. may be next week, i'll have some time to install it. I'm also thinking of building a new computer. I did a quick calculation, it will cost me about $10,000 to setup Xamarin in the new PC to code all three platforms: iOS, Android and WP.

    -new i7 with 6 core and 64 GB RAM and RAID 1.....$3,000

    -Xamarin.iOS and .Android in Visual Studio ......$2,000

    -Visual Studio Pro...............................$1,500

    -dual 27 inch monitor............................$1,000

    -iPhone 4 and iPad for testing...................$1,000

    -Windows Phone for testing (Nokia Lumia 1020)....$600

    -Android 10" tablet..............................$300

    -Windows 10" tablet..............................$600

    @Sami: yes, I noticed Xamarin code is similar to MVVM.

    right now, I'm writing a financial calculator with Eclipse. after coding 10 event handlers, I really missed Visual Studio auto completion and speed!! things began to feel very repetitive in Java land!! not exactly the reason I chose engineering work as a career.

    as an exercise for myself, I will write the exact same financial calculator for iOS and Windows Phone in Xamarin Studio and again in Visual Studio using Xamarin extension.

  • EidandEidand GBMember, University ✭✭✭

    your estimation on setting up Xamarin is grossly misleading :).

    don't add the cost of a pc, tablets, phones, displays, dev tools etc and then call that Xamarin cost ... The only Xamarin cost ( albeit quite expensive ) is the license fees.

    Everything else is the normal cost to any dot net / mobile developer.

  • bob2014bob2014 USMember

    not misleading...if the goal is to code in all 3 platforms, then, Xamarin is the smarter choice assuming if it's actually saved development time. and thus, the estimated cost.

    well, I've been developing inside Eclipse. very interesting stuff. I found quite a bit of keyboard shortcuts which can save me a lot of time from typing and repetitive tasks. I'm hoping to wrap up this financial calculator tomorrow. :-) things are going so well in Eclipse. I might just forget about the other platforms. :-)

    the only reason I need the new PC is b/c of WP and I figured...I haven't spent on a new PC for 5 years now. may be it's time to play with the new toy. :-)

  • SteveFlackSteveFlack GBMember ✭✭
    edited February 2014

    not misleading...if the goal is to code in all 3 platforms, then, Xamarin is the smarter choice assuming if it's actually saved development time. and thus, the estimated cost.

    You could write them all in native code using free tools. The only thing you wouldn't pay for would be Xamarin and VS Pro so saying it's all an Xamarin expense IS misleading.

    Also, I'm not entirely sure that you need a six core i7 with RAID and 64GB RAM... VSPro doesn't cost $1500 and a Lumia 520 (the most common Windows Phone out there) costs $100.

  • bob2014bob2014 USMember

    who said anything about the expense all goes toward Xamarin?
    I'm saying if the goal is to develop for all 3 platforms, may be it's a smarter choice to use Xamarin since you don't start from zero every time.

    I'm not entirely sure that you need a six core i7 with RAID and 64GB RAM

    long term thinking.
    I don't buy computer every year.
    such as the computer I'm using to type this post now is from 2004.
    that's 10 years old and I'm using Eclipse with it.
    I plan to port a lot of the desktop app to the mobiles.
    this means, I need to open up a lot of programs simultaneously: IDE, record screen activity, stream live video and multiple Skype calls.
    and most importantly, the new PC is not only for programming.
    it will be used for 3D animation, video editing, photoshop, etc. which all demand a lot of horsepower.
    and if I need to run any app in the background, I certainly don't like the sluggishness of my machine.

    where can you pickup VSPro under $1,500?
    Lumia 520 is not the same as Lumia 1020.
    for what I plan to do with the mobile apps, I need all the horsepower I can get.
    and most of the WP phones that cost around $100 are not capable of WP 8.1.
    the manufacturer doesn't plan to upgrade from WP 7.5 due to the hardware or other reasons.
    plus, getting the 1020 will at least be usable for 5 years.
    getting the 520 probably be obsolete by next year.

    well, I just finished my FIRST Android app. it's a fully functional financial calculator similar to the HP 12C. two days to code in Eclipse. a lot of stuff to learn about Android, Java and Eclipse but got it done in 2 days - a total of about 40 hours (20 hrs/day programming and reading documentation). now, time to upload to the real hardware. let see where it crashes!!! :-) doing stuff in the mobile land are far away from home than what I used to with the desktop app.

    I'm going in assuming full functionality of the desktop but I need to realize they are completely different beast with different hardware and limitations.

    meanwhile, I grow to like Eclipse once I figured out all the keyboard shortcuts.
    although, I think Eclipse GUI designer is no match for VS but it has its strong points.
    and so like everything else in life. you lose some, you win some. :-)

  • bob2014bob2014 USMember

    btw Steve, do you know any good free IDE for iOS. I still prefer my Windows 7 over 8 machine. so, if the IDE can run in W7, that's even betta.

  • SKallSKall USMember ✭✭✭✭

    Is the calculator done as a hobby? If so, putting it to GitHub would be good as we could then (if time permits) guide in how to do the same with Xamarin and port over to iOS and WP8.

    Lumia 520/1 lacks some hardware features so it's not ideal for development. For the same reason you should also get a 520 (hey, it's only $68 at Walmart without a contract so why not?).

  • bob2014bob2014 USMember

    I did it as an exercise to learn Java, Eclipse and Android.

    yeah, I saw the AT&T and Tmobile, Lumia 520/21. very attractive price. but it was built for WP 7.5 and got upgraded to 8. and I don't think it will be upgraded again to 8.1. most importantly, it's the stuff I do. it requires a lot of horsepower.

    will look into the GitHub.
    thanks for reading.

  • bob2014bob2014 USMember

    btw, once I understood Android and Java language, I would say it's almost 90% the same as C#.
    regular expression, data type conversion, loop, data validation, events, array, string format, activities interaction, etc. are almost the same for Java and C#. both designed for OOP. thus, knowing one is an easy transition to another.

    I still think Eclipse/Android should step up on GUI designer. that's what the user sees. after all, who wants to put a Ferrari engine in the stagecoach, right? :-) and if we actually do that, how many can we sell?

  • rmaciasrmacias USBeta, University ✭✭✭✭✭

    Just a correction regarding the Lumia 520/521. It was not designed for Windows Phone 7.5. It was designed for Windows Phone 8 and was released with Windows Phone 8 installed. It will not run Windows Phone 7.5. For just a little bit more, you can get a Lumia 525, which has a Gig of RAM, compared to the 512MB on the 520/521.

Sign In or Register to comment.