Hello World: Windows Mobile vs Symbian vs Android vs Iphone vs J2ME

Hoy he recibido un mail muy interesante con cinco ejemplo distintos para cinco plataformas distintas, de como hacer el típico «Hello World» u «Hola Mundo«. Para el que no sepa de que va esto, un programa «Hola Mundo» es el primer programa que suele hacerse en un lenguaje cualquiera como primer y más sencillo ejemplo.

Lo que tienen en común estos ejemplo es que los cinco hacen lo mismo y los cinco son para dispositivos móviles: Symbian, Android, Iphone, J2ME y Windows Mobile. Este punto es el más interesante ya que nos puede dar una idea de lo compleja que puede ser cada una de las distintas plataformas. Ahora entremos en detalles.

Ejemplo «Hello World» para Symbian:

// HelloWorld.cpp
//
// Copyright (c) 2000 Symbian Ltd. All rights reserved.
#include "CommonFramework.h"
// do the example
LOCAL_C void doExampleL()
{
_LIT(KHelloWorldText,"Hello world!\n");
console->Printf(KHelloWorldText);
}

Tambien necesitaremos el archivo HelloWorld.mmp con lo siguiente:

// HelloWorld.mmp
//
// Copyright (c) 2000 Symbian Ltd. All rights reserved.
//
// using relative paths for sourcepath and user includes
//
TARGET HelloWorld.exe
TARGETTYPE exe
UID 0
//
SOURCEPATH .
SOURCE HelloWorld.cpp
//
USERINCLUDE .
USERINCLUDE ..\CommonFramework
SYSTEMINCLUDE Epoc32include
//
LIBRARY euser.lib

Y finalmente el archivo bld.inf:

// BLD.INF
// Component description file
//
// Copyright (c) 2000 Symbian Ltd. All rights reserved.
PRJ_MMPFILES
//only one project
HelloWorld.mmp

 
Ejemplo «Hello World» para Iphone SDK:
Lo primero que necesitaremos es crear un proyecto XCode llamada «HelloWorld». No necesitaremos modificar los archivos main.m y main.h. Pero sí los archivos helloworldAppDelegate.m y helloworld.AppDeleage.h.

El archivo header.

    1 //
    2 //  helloworldAppDelegate.h
    3 //  helloworld
    4 //
    5 //
    6 //
    7
    8 #import <UIKit/UIKit.h>
    9
   10 @class MyView;
   11
   12 @interface helloworldAppDelegate : NSObject {
   13     UIWindow *window;
   14     MyView *contentView;
   15     // Levi: Define textView object
   16     UITextView  *textView;
   17 }
   18
   19 @property (nonatomic, retain) UIWindow *window;
   20 @property (nonatomic, retain) MyView *contentView;
   21 // Levi: Declare textView as a property
   22 @property (nonatomic, retain) UITextView *textView;
   23
   24 @end
   25

Y el archivo helloworldAppDelegate.m:

    1 //
    2 //  helloworldAppDelegate.m
    3 //  helloworld
    4 //
    5 // 
    6 //
    7
    8 #import "helloworldAppDelegate.h"
    9 #import "MyView.h"
   10
   11 @implementation helloworldAppDelegate
   12
   13 @synthesize window;
   14 @synthesize contentView;
   15 // Levi: Tell the compiler to synthesize relevant accessors
   16 @synthesize textView;
   17
   18 - (void)applicationDidFinishLaunching:(UIApplication *)application {
   19     // Create window
   20     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
   21
   22     // Set up content view
   23     self.contentView = [[[MyView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
   24     [window addSubview:contentView];
   25
   26     // Levi: Create the text view.
   27     self.textView = [[[UITextView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)] autorelease];
   28     [textView setEditable:YES];
   29     [textView setText:@"Hello World"];
   30
   31     // Levi: Add a text view to the content view.
   32     [contentView addSubview:textView];
   33
   34     // Show window
   35     [window makeKeyAndVisible];
   36 }
   37
   38 - (void)dealloc {
   39     // Levi: Release the textView
   40     [textView release];
   41     [contentView release];
   42     [window release];
   43     [super dealloc];
   44 }
   45
   46 @end
   47

Ejemplo «Hello World» para J2ME:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloWorld extends MIDlet implements CommandListener {
    private Command exitCommand;
    private TextBox tbox;

    public HelloWorld() {
        exitCommand = new Command(«Exit», Command.EXIT, 1);
        tbox = new TextBox(«Hello world MIDlet», «Hello World!», 25, 0);
        tbox.addCommand(exitCommand);
        tbox.setCommandListener(this);
    }

    protected void startApp() {
        Display.getDisplay(this).setCurrent(tbox);
    }

    protected void pauseApp() {}
    protected void destroyApp(boolean bool) {}

    public void commandAction(Command cmd, Displayable disp) {
        if (cmd == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}

Ejemplo «Hello World» para Google Android:

package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(«Hello World»);
setContentView(tv);
}
}

Ejemplo «Hello World» para Windows Mobile:

using System;
using System.Windows.Forms;
public class HelloWorld {

    public static void Main() {

        MessageBox.Show( «Hello World!» );
    }
}

No es por nada, pero me parece que en cuanto a sencillez y elegancia, Windows Mobile y la maravillosa plataforma .NET gana a los demás de calle. ¡¡¡Microsoft Rulez!!!



COMENTARIOS

  1. esteban 26 septiembre 2008, 17:08

    Si, es cierto… Para hacer un «hola mundo» es mejor la plataforma de microsoft…

  2. PoliMalo 26 septiembre 2008, 21:26

    Ya… sí… claro…. Pero no comparto tu opinión.

  3. Juan Manuel 29 septiembre 2008, 19:15

    Puede que para hacer algo simple como Hello Word .Net es más fácil. Pero deberías comparar código de verdad, por ejemplo un lector de código de barras o algo que use openGL. Algo que sea una app de verdad no mostrar un texto.
    Lo que estas haciendo de sacar conclusiones de tan poca evidencia es muy peligroso

  4. cristian 17 octubre 2008, 16:09

    se nota que no sabes lo que es programar de verdad ¬_¬

  5. PoliMalo 18 octubre 2008, 12:47

    Es posible Cristian…. pero he conseguido que dejes un comentario 😉

  6. Gonzalo 21 noviembre 2008, 03:11

    Comparto la opinion de Juan Manuel, por otra parte, que tal otro código un poco más elaborado?, algo así como una pelota rebotando tipo Pong.

  7. F 3 diciembre 2008, 22:16

    no es por nada pero … se nota que nunca programaste nada en esas plataformas.

    trabaje demasiado J2ME, Windows Mobile y Android y puedo asegurar que ANDROID gana por lejos. Windows Mobile sera sencillo para un Hello World. pero para cosas del mundo real, es un quilombo. Android tiene muchisimas cosas a favor y en el mundo real, le gana a todos los otros por LEJOS. podes levantar OpenGL en menos de 30 minutos sin saber usarlo. Windows Mobile? buena suerte.

    saludos.

  8. JChristian 10 marzo 2009, 10:44

    Vaya que sorpresa… Yo creo que progrmar algo no tiene que ser elegante si no funcional… y como veo aqui el «helloworld» de windows es mejor, pero eso no quiere decir que en su practica sea el mejor.

  9. Rayo 14 marzo 2009, 04:15

    Yo = tengo esa duda, quiero empezar a programar en alguna plataforma como Symbian o windows M. pero cual es mejor? ¿cual vale mas la pena aprender? quiero hacer aplicaciones sencillas.

  10. José Antonio 25 marzo 2009, 00:57

    En verdad que es relativamente sencillo programar con windows mobile, pero lo más asombroso de este sistema operativo es que es el único capaz de lograr que un programa tan simple se guinde 😛 jejeje . WM es bueno para pocket pc, pero para un telefono lo mejor es symbian, android aun no estoy familiarizado, y bue… el iphone ni lo menciono xq hasta el día de hoy no he necesitado realizar llamadas desde mi ipod

  11. Gabo 5 abril 2009, 18:04

    Buenos dias. En realidad cual plataforma es mejor? la opensource! Es decir Android o J2ME. Que lenguaje es mejor? para dispositivos moviles pues cualquiera pero la elegancia de la que hablas se concentra en el Lenguaje Java en donde uno hace las cosas como debe hacerlas.

  12. yomismo 19 abril 2009, 14:53

    está claro que a cada uno le resultará mejor o peor un lenguaje en función de sus capacidades mentales. Q un lenguaje te de ‘todo hecho’ no significa que sea mejor que otro que te deja mucho más q programar por ti mismo y por lo tanto mas control sobre el programa.

  13. Justin 24 abril 2009, 00:06

    Es increible el rechazo que hay por Windows y por Microsoft en un pequeño sector de gente en todo el mundo, tanto que solo al solo oir estos nombres, reaccionan como si hubiesen visto al diablo. En realidad lo único que hacen es nadar contra la corriente,….pobres.

  14. coco 26 abril 2009, 14:44

    bueno yo he probado solo j2me y .net y ambas me parecen muy buenas. Va en cuestion de gustos y a mi .net me parece por lejos la mas elegante, legible y estandarizada de todas. Se programa igual un movil, un pc, una pistola de codigo de barras con win ce y cualquier cosa que pueda correr el framework en fin que para programar es mucho mas facil y la orientacion a objetos es mas pura hablo del framework y solo abogo por c# vb es una mierdota

  15. Nanai 19 mayo 2009, 11:26

    Vaya, parece realmente simple programar virus para Windows Mobile 😉

  16. Guti 9 julio 2009, 22:16

    Me ha encantado lo de que con Java haces las cosas como deberías hacerlas!
    Y el operador delete?

  17. Polimalo 9 julio 2009, 22:58

    Ya sabes tio…. la moda del garbage collector. Y luego no sabes de donde te vienen los leaks XDDDD

  18. don nadie 21 julio 2009, 09:15

    quisiera dejar mi aporte para todos los que opinaron y en especial para quienes vivimos de esto. Me parece que en vez de perder el tiempo en discutir de que lenguaje es mejor o peor deberían sacar lo bueno de cada uno ya que cuando se sale a laburar por lo general el programador sólo programa en el lenguaje que le dicen y por experiencia propia aseguro que cuántos más lenguajes se manejen mejor.

  19. david_salsero 19 noviembre 2009, 15:01

    Iphone vs Android Aun falta mucha gente que desconoce las cuentas de gmail, y mucha gente que aun no conoce el sitema Operativo Android 2.0 y muchos moviles con infinitas aplicaciones para que se extienda.Aplicaciones muy utiles y gratis como Google Maps Navigation y el futuro skype con google talk con videoconferencia y gratis.
    Google espera tener al menos 18 móviles con el sistema operativo Android para final del año 2009, esto indudablemente se traduce en miles o incluso millones de futuros usuarios de Android, incluso puede que sean 20 los moviles según comentó Andy Rubin en El NYT y éstos serán desarrollados por 8 ó 9 fabricantes diferentess de la Telefonia movil los mas importantes, Motorola, LG, samsung, HTC, Philips, Sony, incluso importantes empresas fabricantes de ordenadores como Dell, Acer, Lenovo, Huawei, Haier, y la ultima esta española con android GeeksPhone.
    Junto a un SO android plataforma libre a la cual cualquier programador puede acceder, modificar, corregir y perfeccionar, hace que el futuro de Android sea el MAS prometedor de todos los SO superando con creces al Iphone.
    Todavía no tenemos en nuestras manos la nueva versión del sistema operativo Android 2.0 la cual se asentara en 2010 y ya circulan por ahí capturas donde dejan a la vista que se está trabajando con una nueva versión del Android 2.1. que estara acabada para febrero y que corregira los bugs, Es Así como se trabaja un buen SO es linux = por tanto libre, de facil programacion, actualizada y que se esta incluso incorporando a multiples aparatos, portatiles, reproductores de musica, lectores de libros digitales, cuadros etc… Por eso el temor de Iphone vs Android, tiene razones de peso para Temblar y tener esta guerra perdida si no cambia su estrategia

  20. Gutenberg Alexis 7 enero 2010, 15:43

    Pues qué bueno, ahora le pondré Windows Mobile a mi Smartphone, por que es más fácil hacer el «Hello Word», y que viva el HELLO WORD!!!!, hagamos muchos HELLO WORD en nuestros Smartphones…

    Hello Word!!, tres urras por el Hello Word y la simplicidad de .NET

  21. taloswebs... 5 marzo 2010, 00:43

    Me pregunto como es que siempre acabo leyendo estos post…Pa q?es como discutir sobre el sexo de los angeles… cuando al final nos decidamos por una plataforma, habrán salido nuevas tecnologias que habrán convertido en obsoletas a estas… siempre bailando al son de las compías!!!!

  22. Polimalo 6 marzo 2010, 22:36

    El sexo de los ángeles!! XDDDD…. Tienes toda la razón. Yo aun diría más: la mejor es aquella por la que te paguen mejor por ello 😛

  23. Juan 1 junio 2010, 04:54

    todo lo q esta escrito despues del // es solo un comentario y por lo tanto puede ser quitado asi se acortarian la cantidad de lineas de codigo,

    …estos «seudo ejemplos» estan amañados, son injustos e incluso rebuscados.

  24. Jairo peña 14 septiembre 2010, 22:49

    se nota a leguas la preferencia del creador del supuesto mail :/
    no tiene ni gracia

  25. dikas 11 octubre 2011, 18:39

    Si comparar con un MessageBox … usa el alert de J2me y es igual de corto, la comparación deben hacerla bajo los mismos estándares.

DEJA TU COMENTARIO