Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: DragonFire en 26 Abril 2006, 01:04 am



Título: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 01:04 am
C# o Java

Básicamente ambos son lo mismo.

Ambos son lenguajes completamente orientados a objetos, Ambos son multiplataforma a nivel binario y código fuente, siempre y cuando el OS anfitrión tenga las mismas clases.

En Java al compilar una clase se obtiene un archivo binario .class
En C# o cualquier lenguaje .NET se obtiene un binario .exe

Java corre sobre un framework denominado, La maquina virtual de JAVA
Los programas .NET corren sobre el FrameWork .NET

Tal vez la ventaja de ambos mundos no radica a nivel lenguaje, sino a nivel framework

C# o Java son prácticamente iguales

Pero el framework de Java solo corre programas JAVA
El framework .NET corre cualquier programa creado en cualquier lenguaje que genere codigo .NET

Siendo esta ultima la mayor ventaja de .NET, Cualquier lenguaje puede compilar código .NET en lugar de código maquina y este seria portable a nivel binario

Los programas .NET tienen una cabecera similar a la de cualquier programa Windows que indica que no se pueden ejecutar en modo msdos, pero de ahí en adelante el código ya no es x86 sino pseudos código tipo JAVA listo para ejecutarse en una maquina virtual .net denominada FrameWork

Entonces la guerra no es C# VS Java.

El verdadero pleito es a nivel framework, donde el que si sale victorioso es el .NET por la capacidad de correr el codigo de cualquier lenguaje .NET en cualquier plataforma que soporte su framework. Sin importar procesador, ni OS.

A continuación muestro un ejemplo.

Se hace un simple programa que muestra una ventana usando las librerias de Windows form. Es compilado. El EXE es transportado a Linux y en Linux el binario es corrido, como si hubiera sido programado para correr en Linux.

El futuro que promete .NET es programa en tu lenguaje favorito. Compila a .NET y córrelo donde sea


Código:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace winlinux
{
/// <summary>
/// Descripción breve de Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button button1;
/// <summary>
/// Variable del diseñador requerida.
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Necesario para admitir el Diseñador de Windows Forms
//
InitializeComponent();

//
// TODO: Agregar código de constructor después de llamar a InitializeComponent
//
}

/// <summary>
/// Limpiar los recursos que se estén utilizando.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Método necesario para admitir el Diseñador, no se puede modificar
/// el contenido del método con el editor de código.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.Location = new System.Drawing.Point(72, 72);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(160, 48);
this.label1.TabIndex = 0;
this.label1.Text = "Me programaron y compilaron en Windows XP y Visual C#, Pero puedo correr en GNU/L" +
"inux";
//
// button1
//
this.button1.Location = new System.Drawing.Point(88, 176);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(120, 32);
this.button1.TabIndex = 1;
this.button1.Text = "Cerrar";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
  this.button1,
  this.label1});
this.Name = "Form1";
this.Text = "Programa C#";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// Punto de entrada principal de la aplicación.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
this.Dispose();
}
}
}

Hecho y Compilado en Visual C# en Windows home

(http://www.lastdragon.net/misarchivos/winlinux/winlinux1.jpg)

El binario corriendo en Linux como si el codigo binario fuera nativo de esta plataforma

(http://www.lastdragon.net/misarchivos/winlinux/winlinux2.png)


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 01:09 am
Ambos son lenguajes completamente orientados a objetos, Ambos son multiplataforma a nivel binario y código fuente, siempre y cuando el OS anfitrión tenga las mismas clases.
¿C# multiplataforma? ¿En dónde viste eso? Solamente funciona en Windows, y en Linux de suerte por MONO.

Ejecuta una aplicación en Mierdintosh o BSD y a ver qué pasa. Ahora, haz lo mismo pero con Java... ¿cuál es el multiplataforma? Java. :P


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 01:16 am
Le pusiste atencion a los pantallazos..

Un programa compilado en Windows el BINARIO.EXE, Esta corriendo en GNU/Linux.

Pero no lo compile en Linux solo cumpli con tener el framework .NET. En este caso proveido por Mono

pero igual podria haber usado el de dotgnu o el de cualquiera que lo implemente y cumpla con las normas del framework


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 01:22 am
¿C# multiplataforma? ¿En dónde viste eso? Solamente funciona en Windows, y en Linux de suerte por MONO.

Ejecuta una aplicación en Mierdintosh o BSD y a ver qué pasa. Ahora, haz lo mismo pero con Java... ¿cuál es el multiplataforma? Java. :P

Me pregunto si tu y idol me hubieran insulteteado al escribir algo como eso...

Afortunadamente yo mantendre el decoro con la esperanza de que no se descomponga el tema.

si codigo de la MaC ha sido compilado para .NET correra hasta en Windows, lo mismo en el caso de BSD.

Al final lo dejo claro.. la promesa .NET es:

Tu binario puede correr donde sea bajo el OS que sea cn el procesador que sea...

Encontre el siguiente material
http://www.webxalapa.com/cienciaytecnologia/deicaza0904.wmv

es una platica con Miguel Icaza sobre la tecnologia .NET y mono. Miguel es el creador de mono y el proyecto Gnome y presidente de Ximian que fue comprado por Novell.
Bueno ahi miguel explica muy bien que es mono, que no es y las ventajas


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 04:31 am

Me pregunto si tu y idol me hubieran insulteteado al escribir algo como eso...
No entiendo. :huh:


Citar
si codigo de la MaC ha sido compilado para .NET correra hasta en Windows, lo mismo en el caso de BSD.

Al final lo dejo claro.. la promesa .NET es:

Tu binario puede correr donde sea bajo el OS que sea cn el procesador que sea...

Eso no lo puedo comprobar porque solamente tengo Windows y GNU/Linux, pero igual estoy seguro de que no corre en esos otros 2.
¿Con qué se ejecutará si no hay Framework para BSD ni Mierdintosh?  :huh:
Por las dudas, que alguno lo intente y nos cuenta. :)


Citar

Encontre el siguiente material
http://www.webxalapa.com/cienciaytecnologia/deicaza0904.wmv

es una platica con Miguel Icaza sobre la tecnologia .NET y mono. Miguel es el creador de mono y el proyecto Gnome y presidente de Ximian que fue comprado por Novell.
Bueno ahi miguel explica muy bien que es mono, que no es y las ventajas
Bueno... lo voy bajando mientras veo otro rollo. ;D

Miguel es el único mexicano que sabe e hizo algo bueno, yo seré el segundo. ;D


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 05:26 am
Asi como que de curiosidad...

Citar
¿Con qué se ejecutará si no hay Framework para BSD ni Mierdintosh? 
Por las dudas, que alguno lo intente y nos cuenta

Ya viste el video explicado por el mismo miguel de icaza..


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 05:35 am


Citar
¿Con qué se ejecutará si no hay Framework para BSD ni Mierdintosh? 
Por las dudas, que alguno lo intente y nos cuenta

Ya viste el video explicado por el mismo miguel de icaza..

Framework para linux

ftp://www.go-mono.com/archive/1.1.15/linux-installer/0/mono-1.1.15_0-installer.bin

Framework para Windows, si compite con el original de Microsoft

ftp://www.go-mono.com/archive/1.1.15/windows-installer/0/mono-1.1.15-gtksharp-2.8.2-win32-0.exe

Framework para MAC OS con procesador PowerPC osea las macs de verdad

ftp://www.go-mono.com/archive/1.1.15/macos-10-ppc/0/MonoFramework-1.1.15_0.macos10.novell.ppc.dmg


Framework para solaris con procesadores sparc

ftp://www.go-mono.com/archive/1.1.15/sunos-8-sparc/0/mono-1.1.15_0.sunos8.novell.sparc.pkg.gz


Framework para nokia 770

ftp://www.go-mono.com/archive/1.1.13/nokia/mono-nokia_1.1.13-1_arm.deb



Varios framework para linux optimizado para IA86

http://www.go-mono.com/download/sles-9-ia64

Por si fuera poco el codigo fuente para portar el framework a cualquier otra plataforma

http://go-mono.com/sources/mono/mono-1.1.15.tar.gz

digo solo basta tener las ganas para reimplementarlo en la plataforma que sea..


Entonces xciclop, que nos decias con la portabilidad de Java...

El programa que hice en Visual Stdio en C# o incluso Visual Basic .NET y cualquier cosa .NET compilada, puede correr felizmente por cualquier plataforma....


Asi, indirectamente hay para BSD, por que los que somos usuarios de BSD sabemos que solo basta instalar el modulo de linux en el kernel y listo... BSD corre cualquier programa Linux, incluyendo mono por supuesto


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: marioly en 26 Abril 2006, 05:59 am
C# si es multi-plataforma ..., de echo muchos presentan a C# como un "Java mejorado", esto haciendo referencia a su portabilidad, seguridad y facilidad de desarrollo, entre otros... Creo que Microsoft se dio cuenta que mientras mas campo abarke con sus productos, estos seran mas rentables =/ , muy bueno tu post  :D


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Eternal Idol en 26 Abril 2006, 09:15 am
Me pregunto si tu y idol me hubieran insulteteado al escribir algo como eso...

¿Que pasa? ¿Estas obsesionado por haber quedado en ridiculo? No hace falta que me nombres.

En cuanto al tema te comento que Java y .NET me importan tanto como vos: NADA.


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 09:29 am
Bueno, bueno. De todas maneras, según yo, son la misma porquería. Necesitan del VM - .Net Framework. C++ no necesita de NADA ni de NADIE. ::)


Ya viste el video explicado por el mismo miguel de icaza..
Apenas ahorita voy a ver ese video. ;D


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 09:29 am
¿Que pasa? ¿Estas obsesionado por haber quedado en ridiculo? No hace falta que me nombres.

En cuanto al tema te comento que Java y .NET me importan tanto como vos: NADA.

Y tu aporte cual es?, A nadie nos importa si te importa o no Java o .NET. Entonces que piensas aportar al tema...

No me digas, eres un Trollesito, no te hubieras molestado en venir a escribir esa basura... este sitio parece tierra de nadie...desbaratas temas que da gusto y nadie te saca del foro.

Entonces por favor deja de escribir en este tema si no piensas aportar nada.


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 09:31 am
Bueno, bueno. De todas maneras, según yo, son la misma porquería. Necesitan del VM - .Net Framework. C++ no necesita de NADA ni de NADIE. ::)


Otro pequeñisimo error, por ahi... el compilador dependiendo de las banderas puede generar un precompilado en codigo nativo de la maquna.. el programa final se ejecutara tan veloz como un programa nativo...

revisa las banderas del C sharp, para indicar una precompilacion a codigo maquina nativo


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Eternal Idol en 26 Abril 2006, 09:40 am
Y tu aporte cual es?

¿Te jode? ¿No queres leerme? ¿Entonces para que carajo me nombras? Hace tu, patetica, vida.

Entonces por favor deja de escribir en este tema si no piensas aportar nada.

Por cierto, tu aporte es decir obviedades y mentiras, nada mas y nada menos. Ademas de tu hipocresia, me decis troll que gracia, el tipo que abre hilos para desprestigiar lenguajes y no aporta una minima prueba tangible ... por favor.

Jamas pense en aportar nada y si escribi en este tema fue por tu culpa, ahora no te hagas el inocente, por algo me nombraste. No lo hubieras hecho, sabias perfectamente lo que significaba hacerlo.


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 09:52 am
Otro pequeñisimo error, por ahi... el compilador dependiendo de las banderas puede generar un precompilado en codigo nativo de la maquna.. el programa final se ejecutara tan veloz como un programa nativo...

revisa las banderas del C sharp, para indicar una precompilacion a codigo maquina nativo
Ahora sí que no entendí nada. :huh:


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 15:52 pm
Otro pequeñisimo error, por ahi... el compilador dependiendo de las banderas puede generar un precompilado en codigo nativo de la maquna.. el programa final se ejecutara tan veloz como un programa nativo...

revisa las banderas del C sharp, para indicar una precompilacion a codigo maquina nativo
Ahora sí que no entendí nada. :huh:

Vamos, no estan dificil.

No siempre el codigo se teine que ejecutar al e interpretado como java, dependiendo de las "banderas" "argumentos" no se como le digas a las opciones del compilador...

dependiendo de las que uno le indique... puede terminar precompilando el codigo a maquina nativa osea codigo maquina y ejecutarse a la velocidad directa del procesador.

  --aot                Compiles the assembly to native code

Código:
Usage is: mono [options] program [program-options]

Development:
    --aot                  Compiles the assembly to native code
    --debug                Enable debugging support
    --profile[=profiler]   Runs in profiling mode with the specified profiler mo
dule
    --trace[=EXPR]         Enable tracing, use --help-trace for details
    --help-devel           Shows more options available to developers

Runtime:
    --config FILE          Loads FILE as the Mono config
    --verbose, -v          Increases the verbosity level
    --help, -h             Show usage information
    --version, -V          Show version information
    --optimize=OPT         Turns on or off a specific optimization
                           Use --list-opt to get a list of optimizations
    --security             Turns on the security manager (unsupported, default i
s off)


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Casidiablo en 26 Abril 2006, 17:30 pm

A pesar de que se han tomado el hilo para insultarse y decir estúpideces, en realidad es un tema interesante. A muchos les costa que me encanta Java, pero no por eso voy a dejar de aprender .NET; o sino ¿qué gracia tiene?.

No preocupo porque Java quede como el mejor lenguanje o cosas por el estilo, solo por manejarlo lo mejor que pueda y aprender sobre otras tecnologías; por mi parte en vez de estar criticando mejor me dedico a bajar tutos e información  para ir aprendiendo paralelamente .NET.

De todas formas en medio de la polémica LastDragon ha aportado información valiosa ¿o no?

Saludos!!!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 20:05 pm

  --aot                Compiles the assembly to native code

Código:
Usage is: mono [options] program [program-options]

Development:
    --aot                  Compiles the assembly to native code
    --debug                Enable debugging support
    --profile[=profiler]   Runs in profiling mode with the specified profiler mo
dule
    --trace[=EXPR]         Enable tracing, use --help-trace for details
    --help-devel           Shows more options available to developers

Runtime:
    --config FILE          Loads FILE as the Mono config
    --verbose, -v          Increases the verbosity level
    --help, -h             Show usage information
    --version, -V          Show version information
    --optimize=OPT         Turns on or off a specific optimization
                           Use --list-opt to get a list of optimizations
    --security             Turns on the security manager (unsupported, default i
s off)

Así sí. Flags. ;D

Así como -s que creo que es para hacer más chicos los programas.

¿Qué tiene de especial un lenguaje interpretado y no compilado como Java? :huh:


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Casidiablo en 26 Abril 2006, 20:41 pm
¿Qué tiene de especial un lenguaje interpretado y no compilado como Java? :huh:

Según tengo entendido... que en uno interpretado (como Perl, por ej.) el interprete (valga la redundancia) analiza y ejecuta el código fuente directamente. En el caso de C/C++ se compila y esto genera un *.exe que es depues ejecutado (interpretado) por el SO (windows obviamente); en el caso de Java pues se sabe que se genera un .class que es interpretado por la VM.

Saludos!!!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 20:47 pm
¿Qué tiene de especial un lenguaje interpretado y no compilado como Java? :huh:

C# es un lenguaje compildo, Visual Basic es un lenguaje compilado C es un lenguaje compilado. Todos ellos incluyendo Java son lenguajes compilado.

Se entiende por interpretado aquellos lenguajes que pasan directamente de su codigo fuente a la ejecusion como lo era el Qbasic que venia en el MSDOS 6.22 y anteriores o como el PHP. Aunque tambien hay compiladores para PHP y generan un binario.

El parecido al codigo .NET a JAVA es que el codigo es de maquina virtual

Los FrameWork de .NET y JAVA. Creo que Java tambien tiene la opcion de la precompilacion.

La precompilacion lo que hace es que convierte tu codigo .NET al codigo nativo es como recompilar todo pero a nivel binario

En todo este hilo he tratado de explicar que a nivel lenguaje yo no le vo ninguna diferencia a C# de Java, Bueno con algunas excepciones de implementacion de clases pero a la vista el feel & look es el mismo. Que la unica ventaja real del proyecto .NET es la capacidad de  recibir binarios de otro programa.

Por ejemplo

C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS

Pero si C compila a .NET, Todo tu codigo asi como esta podria correr sin problemas en las demas plataforma.

C tambien esta invitado a .NET
Java esta intivado a .NET, el codigo de Java puede ser recompildo en mono para convertirse en .NET
Visual Basic puede generar codigo x86 pero el .NET puede generar el codigo para ser ejecutado en .NET osease en cualquier parte donde exista el framework

La idea del .NET no se trata de un lenguaje.. C# es el insignia, sin emargo .NET no es C#

.NET es el modelo de implementacion de codigo mas portable que C

.NET funciona como una red de codigo.

Si creas apis en Visual Basic, estas podrian ser llamadas desde C#

o si tienes apis python podrias llamarlas desde C, es como si todos los lenguajes cooperaran..

seria mas facil si leyeras un poco por que es mucho por explicar y siento que este nuevo mundo es muy dificil para ti, por que no logro explicarte de forma que me entiendas el asunto del .NET, ya viste la platica de Miguel de Icaza?


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 20:54 pm
Por ejemplo

C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS
Entonces según tú C no es portable. :huh:

Citar
seria mas facil si leyeras un poco por que es mucho por explicar y siento que este nuevo mundo es muy dificil para ti, por que no logro explicarte de forma que me entiendas el asunto del .NET,
Bueno... entonces me pongo a buscar en el MSDN, a ver si ya entiendo bien. :)

Citar
ya viste la platica de Miguel de Icaza?
No. Ayer cuando lo quise ver, el Winbugs (¿o cómo le dicen? ;D) me daba errores de que no encontraba el temp. Así que hoy tengo que volver a bajarlo. >:(


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 21:00 pm
Por ejemplo

C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS
Entonces según tú C no es portable. :huh:


Que esto, ¿lo estas haciendo a proposito?

Yo creo qeu aunque aveces se me va algun teclaso o tengo alguna que otra falta de ortografia. lo que escribo semanticamente es comprensible.

Ahi no dice por ningun lado que C no sea portable. Dice que es ineficiente para ese hecho, obvio lo estoy comparando con C#

Xciclop tenemos un problema de semantica, hay que hacer algo al respecto


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Casidiablo en 26 Abril 2006, 21:06 pm
La idea del .NET no se trata de un lenguaje.. C# es el insignia, sin emargo .NET no es C#

¿Podrías explicar esto? Es que no entiendo muy bien y me interesa bastante. Igual me pongo a buscar ya mismito :D

Saludos!!!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 21:07 pm
Pero estás diciendo que C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS.

Por eso digo, que según tú, C no es 100% portable. Si fuera portable compilas en Windows/Linux/BSD igual, sin cambiar NADA de código.


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 26 Abril 2006, 21:29 pm
Pero estás diciendo que C es ineficiente para cambiarse de plataforma.. del 100% del codigo hay que reescribir aveces hasta el 85% y aveces mas para reimplementar un programa en otro procesador y/o OS.

Por eso digo, que según tú, C no es 100% portable. Si fuera portable compilas en Windows/Linux/BSD igual, sin cambiar NADA de código.

asi es... no es 100% portable, no digo que no l osea pero simplemente el mismo codigo no siempre correra en todos lados


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 26 Abril 2006, 21:32 pm
¿Y qué tiene Java que compila sin mover NADA de código en cualquier OS? ¿No tiene librerías o son las mismas para todos los OS?


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Casidiablo en 26 Abril 2006, 22:25 pm
¿Y qué tiene Java que compila sin mover NADA de código en cualquier OS?

La VM.

¿No tiene librerías o son las mismas para todos los OS?

Tiene librerías.. pero más bien se le dice "paquetes". El hecho es que la VM se encarga de hacerlo Universal para casi todas las aplicaciones que se hagan.

Saludos!!!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 27 Abril 2006, 00:00 am
La idea del .NET no se trata de un lenguaje.. C# es el insignia, sin emargo .NET no es C#

¿Podrías explicar esto? Es que no entiendo muy bien y me interesa bastante. Igual me pongo a buscar ya mismito :D

Saludos!!!

Ok.

Para entender esto, a diferencia fundamental entre Java y .Net hay que separa el lenguaje de las VM

Java tiene una maquina virtual, La maquina Virtual de JAVA. El asunto con esta maquina virtual es que espera ejecutar archivos class que provienes de clases en archivos .java

Esto significa que la maquina virtual de java esta ligada al lenguaje java. Solo corre programas compilados del lenguaje Java.

El framework .NET es la maquina virtual de este entorno, pero el framework no esta ligado a ningun lenguaje.

framework se comporta como un sistema operativo en si mismo.. Como el Basis para los que han instalado software de SAP.

entonces el en este entendido el framework .net siendo "un tipo de sistema operativo" permite recibir y ejecutar codigo arbitrario que pueda entender.

como un procesador de IA86 ejecuta cualquier codigo IA86, framework ejecutara cualquier codigo .NET el que sea no importa de que fuente provenga.

Quienes son las fuentes.

Los lenguajes de compilacion son la fuente. Tradicionalmente un lenguaje de programacion genera codigo para un OS y Procesador especifico y hay compiladores para cada plataforma. Basicamente ahora hay un compilador para una nueva plataforma la .NET

Entonces Visual Basic.NET hace referencia a que Visual Basic en lugar de generar codigo x86 va a generar codigo para la plataforma .NET

Python.NET, Pascal.NET (Delphi.NET), ada.net, perl.net, Asp.net, Etc,Etc, Etc.NET

Si todos esos lenguajes compilan para una plataforma virtual llamada .NET significa que el framework .net puede correr el codigo generado, como un procesador de intel correria un exe comun y corriente de Windows

Entonces la similitud es que el framework traduce su plataforma .net a codigo nativo del procesador local como lo hace JAVA, pero el framework acepta cualquier programa compilado en .NET no solo JAVA

Y la ventaja para el programador cual es?

Digamos que soy un programador de python es lo unico y es lo unico que se programar.

Quiero exportar mi programa a una Sparc corriendo solaris imaginemos que en esta plataforma no existe python

consigo un compilador de python.net y mi conocimiento sobre python es lo unico que debo saber para generar un ejecutable que va a correr en esa sparc o en un Windows o una mac. No tendria que aprender nada del procesador local yo solo programaria tal como se y listo mi programa corre donde sea que haya un framework .net

Otro ejemplo

Yo solo se Visual Basic y quiero programar para Linux un programita con ventanitas y todo muy mono asi como en Windows.

Pero resulta que en Linux no tengo un compilador de VB, pues con el VB tradicional generaria codigo x86 para windows

Visual Basic.NET va a generar un codigo para framework.net que luego podre correr en Linux como si mi programa fuera nativo de esa plataforma o en MacOS, o en la Sparc

Mi conocimiento de Visual Basic sera suficiente para que yo escriba aplicaciones para arquitecturas tal vez ni conosca

Les recomiendo que si tienen dudas, vean el video de miguel de icaza el video toma mas de una hora de platica y en todo el video se explica esto de forma audio visual, imaginence si tuviera que reescribir todo para poder explicarlo con letras...

lo que escribo es el resumen de toda esa interesante platica.

En resumen

La maquina virtual de JAVA esta ligada a programas hechos con JAVA

La maquina virtual .NET no esta ligada a ningun lenguaje aunque la mayoria lo relacione con C# y es que como el C# se parece a JAVA y la maquina virtual .NET funciona similar a JAVA lo han usdo como lenguaje insignia pero no quiere decir que sea el unico lenguaje para programar en .NET

Todos los lenguajes son bienvenidos en .NET incluso JAVA

Una de las cosas mas poderosas del .NET es:
Imaginate que haces una clase en JAVA, a lo que seria JAVA.NET y desde C.net o desde Delphi.net creas un objeto que hereda de la clase hecha en JAVA. La potencia maxima del .NET es que los programas escritos en diferentes lenguajes de pronto pueden compartir codigo.

Imaginate un Python haciendo uso de una rutina JAVA o de Pascal. Cosas a ese nivel.

Podria formar un equipo de programadores y que cada programador fuera experto en su propio lenguaje. Al final el codigo de todos podria mesclarse para formar un programa que proviene de diferentes lenguajes.


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Casidiablo en 27 Abril 2006, 00:26 am

Muy, muy muy interesante. Luego veo el video ya que no tengo parlantes.

Saludos y Gracias!!!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 27 Abril 2006, 01:07 am

La VM.

Tiene librerías.. pero más bien se le dice "paquetes". El hecho es que la VM se encarga de hacerlo Universal para casi todas las aplicaciones que se hagan.

Ah. Lo malo es que cuando ejecutas una aplicación en Java el VM, solo en Windos, te pone todo muy lento. Yo a veces juego ajedrez/pool en Yahoo! y de verdad que en Windows parece todo como si tuviera 1kb de RAM, en cambio, en Linux parecería que son "applets de C++" (qué raro se escucha), porque todo va igual de rápido. ::)

¿A qué se debe esa lentitud en Windows?

Las aplicaciones en .Net no se. Nunca he probado una sola aplicación hecha en .Net para saber qué tanto influye el .Net Framework con la velocidad de la pc. :rolleyes:


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 27 Abril 2006, 01:59 am

La VM.

Tiene librerías.. pero más bien se le dice "paquetes". El hecho es que la VM se encarga de hacerlo Universal para casi todas las aplicaciones que se hagan.

Ah. Lo malo es que cuando ejecutas una aplicación en Java el VM, solo en Windos, te pone todo muy lento. Yo a veces juego ajedrez/pool en Yahoo! y de verdad que en Windows parece todo como si tuviera 1kb de RAM, en cambio, en Linux parecería que son "applets de C++" (qué raro se escucha), porque todo va igual de rápido. ::)

¿A qué se debe esa lentitud en Windows?

Las aplicaciones en .Net no se. Nunca he probado una sola aplicación hecha en .Net para saber qué tanto influye el .Net Framework con la velocidad de la pc. :rolleyes:

No se en los nuevos kernel, pero en los viejos venia un modulo activable..

justo abajo de correr ejecutables ELF de Linux
venia correr ejecutables JAVA

Cuando se le activa esa opcion a Linux corria el codigo Java como codigo nativo de Linux, el resultado es que tendria que ejecutarse tan rapido como un programa nativo...

por que la ejecusion del java era o es a nivel kernel no atraves de una maquina virtual

En los nuevos kernel noveo el modulo de programas JAVA supongo que ahora viene embebido dentro del kernel y ya no se le puede desactvar. Digo por que realmente tiene tiempo que no requiero compilar kernel de la serie 2.6.x

Bajate un kernel de la serie 2.4.x y revisa esa opcion de hecho en la ayuda de modulo viene bien explicado que ventajas le daba a Java


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 27 Abril 2006, 06:55 am
Dios, qué pronunciación... "Microsoft", "Java", "Python". Es peor que la mía. ;D



Citar
"Queremos que Linux reemplace a Windows"

Que quiten los comandos. ;D

Citar
"Para aquellos que tienen problemas en la escuela, también tenemos un compilador de Basic"
Jajajajajaja. ¡Así se habla! ;)

Citar
"C# es Java, pero con más cosas y de Microsoft"
Aha.

Citar
"Microsoft gasta mucho dinero en documentación, ese es un gran defecto del software libre"
Desgraciadamente, así es. Aunque otro defecto, que no es tan común, es el GUI. :-[

Citar
"MONO no tiene Windows Forms"
¿Y no existe un IDE por aparte que haga esto?  :huh:


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: DragonFire en 27 Abril 2006, 07:47 am
Veo que ya lograste ver el video. :)

Bueno la pronunciacion es como uno quiera.

Aqui  cuando he trabajado con españoles le dicen

Microsoft a Maicrosoft

algunos le dicen paiton otros piton

algunos osados le siguen diciendo lainux a Linux en fin, por nombres, no creo que haya debate. hasta que el autor de cada programa aclare como lo pronuncia

Linus torlvards tiene una grabacion en donce dice..

Hello this is Linus Torvarlds and I pronunce Linux as L"i"nux

Sobre Basic... me es graciosa la parte donde les llama programadores de closet.


En la parte que dices que mono no tiene las librerias de Windows.Form

Si recuerdas bien el video el esta hablando en futuro que las va a tener, pero resulta que nuestro presente ya es el pasado del futuro del que el hablaba..

Ese video fue presentado en el 2004, hace 2 años. Ya tenemos Windows Form

Este hilo lo inicie con un programa de ejemplo que hace uso de Windows Form


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 27 Abril 2006, 08:24 am
Bueno la pronunciacion es como uno quiera.

Aqui  cuando he trabajado con españoles le dicen

Microsoft a Maicrosoft

algunos le dicen paiton otros piton

algunos osados le siguen diciendo lainux a Linux en fin, por nombres, no creo que haya debate. hasta que el autor de cada programa aclare como lo pronuncia

Linus torlvards tiene una grabacion en donce dice..

Hello this is Linus Torvarlds and I pronunce Linux as L"i"nux
Es que a mi me gusta pronunciar bien, todo como se debe. Nada de "Microsoft". Por eso uso el plug in del Opera o el text-to-speech con el Babylon.:)

Citar
Sobre Basic... me es graciosa la parte donde les llama programadores de closet.
Sí, me reí mucho. ;D

Citar
Este hilo lo inicie con un programa de ejemplo que hace uso de Windows Form
Ah ok.


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: BADBYTE-K en 2 Mayo 2006, 03:38 am
Bueno. creo que es la primera vez que estoy deacuerdo con Dragon, es que esta diciendo es fidedigno, me sorprendi cuando hace un par de semanas, en suse comence a probar mis practicas de c# y vb para consola y winforms, sin duda es un gran avance el que se ha logrado. y cabe mencionar que cuando se presento la tecnologia .net como mejora de COM, ese fue uno de los puntos a tratar, pero todos los que tuvimos la oportunidad de recibir charlas en el nacimiento de .net , concordamos que la idea de microsoft en realidad estaba orientada a aplicaciones corriendo en todos los windows (a excepcion de win95 que queda fuera) pero como hemos visto, la multiplataforma se esta logrando, indirectamente, pero se esta logrando gracias a la invencion del Intermediate language (IL) lo que nos permite generar codigo independiente de arquitecturas especificas.

aqui se habla un poco del tema:

http://www.ajlopez.net/ArticuloMuestra.php?Id=654

entonces, quiero comentarles algo, una vez me preguntaron lo que opino de .NET y lo que respondi lo sigo sosteniendo.

Una de las pocas cosas que en verdad valen la pena viniendo de quien viene

y es facil aprenderlo, gracias a la gran cantidad de material disponible por la red.

por ejemplo:

http://caldoit.blogspot.com/2006/04/curso-de-introduccin-net-con-c.html

una muestra de lo que se encuentra y totalmente gratuito.

y asi, se encuentran muchas cosas utiles

http://caldoit.blogspot.com/2006/04/recursos-gratis-para-clases-de-net.html


yo les recomiendo C# a pesar de que no lo he aprendido lo suficiente aun, lo que lo he tratado me da la facultad para decirles que es bueno.

Otra cosa que quiero mencionarles, es que la competencia directa en lo que se refiere a .NET vrs JAVA es J#

a pesar de lo parecido de java con c# se sorprenderan de lo mas parecido que tiene a  J#

http://www.microsoft.com/spanish/msdn/vjsharp/productinfo/overview.asp

saludos


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: JuszR en 9 Junio 2006, 16:59 pm
Tengo 2 dudas.

- ¿Cómo mierd@ compilo un *.cs?
Leí la documentación y decía que con "csc archivo.cs", pero me dice que el comando no se encuentra.
Y tampoco veo por ningún lado el IDE de MONO. :-\

- Si hago un GUI en Glade y compilo con MONO, para ejecutarse en Windows, ¿necesito el MONO o puede ser con el .Net Framework?. :huh:

En la documentación no veo nada que responda. :-[


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: winfuck en 20 Junio 2006, 00:11 am
Hola X.Cyclop

Bueno tengro la respuesta a tu primer pregunta.
Para compilar un .cs, en consola
Código:
mcs file.cs

En cuanto a IDE para Mono, yo uso el Monodevelop.
http://www.monodevelop.com/Main_Page

o desde consola instalalo
Código:
sudo aptitude install monodevelop

En cuanto a la segunda pregunta, si hago un GUI en Glade y compilo con MONO, para ejecutarse en Windows, ¿necesito el MONO o puede ser con el .Net Framework?, yo tambien tengo esa pregunta, ya intente correrlo pero me da error y tal parece que no tenia instalado el gtk-sharp en windows, asi que busque y instale uno de novell, pero siguio sin correr.

Otra pregunta, como en linux se compila con mcs, en windows como se compila sin usar el visual studio y sus derivados, osa como se compila por cmd???

Gracias de Antemano, Saludos!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: Casidiablo en 23 Junio 2006, 15:41 pm
Otra pregunta, como en linux se compila con mcs, en windows como se compila sin usar el visual studio y sus derivados, osa como se compila por cmd???

Abres el cmd, te ubicas en la carpeta bin de donde instalaste el mono, y luego haces lo mismo: mcs archivo.cs. Así me funciona ;)

Saludos!!!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: winfuck en 23 Junio 2006, 16:37 pm
Otra pregunta, como en linux se compila con mcs, en windows como se compila sin usar el visual studio y sus derivados, osa como se compila por cmd???

Abres el cmd, te ubicas en la carpeta bin de donde instalaste el mono, y luego haces lo mismo: mcs archivo.cs. Así me funciona ;)

Saludos!!!

Lo siento me exprese mal, cuando decia sin usar el Visual Studio y sus derivados me referia a sin usar el programa en entorno grafico, osea quiero saber como compilar un programa con la .NET Framework, asi como se hace con MONO, como se hace con .NET Framework desde consola (cmd)?

Gracias =
Saludos!


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: BADBYTE-K en 24 Junio 2006, 05:56 am
Pues te bajas el .NET Framework SDK
http://msdn.microsoft.com/netframework/

Y para compilar archivos de C# usas:


Código:
csc archivo.cs

para vb usas:

Código:
vbc archivo.vb

saludos



Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: winfuck en 24 Junio 2006, 23:41 pm
Muchas gracias, luego lo voy a probar ;)


Título: Re: Java VS C#, No lo creo, Son lo mismo pero...
Publicado por: granzeta en 6 Agosto 2011, 21:20 pm
Hola a todos soy nuevo y quisiera aportar puntualizando algunas cosas, que se me llamaron la atención al leer el articulo.

Afirmas: que la JVM esta muy ligada a java y Net soporta multiples lenguajes de programacion, es entendible tu punto, por la "especificación del Lenguake Comun" (CLS) que ha promocionado habilmente Microsoft, y algunos especifican como la "principal diferencia entre java y NET", que aunque yo no puedo debatir tecnicamente por que mis concocimientos son escasos en la materia, si lo pongo en duda, pero recurriendo al método de recopilar evidencias de hecho a  favor y en contra a continuación. 

- En Net se compilan varios lenguajes de programacion como C#, Vb, NetCobol, Delphi, PowerBuilder, etc, gracias al CLS que permite este variedad de lenguajes, y en la cual se basa la principal diferencia entre NET y java
- Fue una sopresa encontrar que en JVM, tambien se compilan otros lenguajes, entre ellos: Groovy , Jython(Python en JVM), Scala, Clojure (basado en Lisp), JPerl(basado en Perl), Kotlin, Ceylon (en beta por RED HAT), REL, JRuby,etc. muchos de a lo cuales no son una promesa si no un presente real y como señalan muchos entendidos tienen un futuro provisorio como: Groovy , Scala, Clojure (basado en Lisp)
 
Si java no tiene no tiene algo similar a CLS como hace el JVM para compilar varios lenguajes?, O posiblemente si tiene mecanismos similares al CLS de Net?, mas alla de responder esta pregunta. En la realidad y fines practicos esta principal diferencia entre Net y Java "no existe", pudiendo escoger Net por eje. si quieres programar lenguajes antiguos como Cobol o Pascal (de Delphi), o si te gusta python IronPython de Net o Jyton de Java, y si quieres usar lenguajes emergentes como Groovy, Escala o Clojure que corren en JVM, que un futuro también se podrian migrar a Net.

ADICIONALMENTE:
- C# es muy buen leguaje , que algunos lo han llamado java mejorado, y por lo que sé podria serlo en algunos aspectos, pero todavia no lo puedo afirmar, pero si agrego respecto a la portabilidad es, que JVM esta implementado en la actualidad un sinnumeros de plataformas diversas muy superior a la Net, siendo una mejor opción en grandes empresas, que tienen una mezcla de sistemas heterogenos como los mainfranes, que puede que algun dia las implemente Net, aunque no lo veo llegar ni en corto ni mediano plazo.
- Tambien pongo en el tapete una mayor madurez de java con JEE para aplicaciones empresariales de misión crítica, debido a su amplio e intensivo uso en las empresas en USA y Europa, lo que influye en la decision a la hora de elegir entre NET y JAVA en ambitos corporativos.

Net es mejor que JaVa? no creo que existan los argumentos suficientes para afirmarlo, que Net en un futuro puede superar a Java? es posible, siguie creciendo en caracteristicas y potencia ademas de tener buenos cimientos y respaldo de Microsoft. Tiempo lo dirá. Aunque la forma mas directa seria que Microsoft compre Oracle dueña de Java.

Ciertamente, no soy un experto, pero he tratado, de buscar y analizar por diversos lugares opiniones diferentes sobre el tema y ver sus fundamentos, por lo que es probable que me equivoque si alguno de Ustedes puede complementar o rectificar algo bienvenido.