Java VS C#, No lo creo, Son lo mismo pero...

Iniciado por LastDragon, 26 Abril 2006, 01:04 AM

0 Miembros y 3 Visitantes están viendo este tema.

LastDragon

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


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



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


JuszR

Cita de: LastDragon en 26 Abril 2006, 01:04 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
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]

LastDragon

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

LastDragon

#3
Cita de: X.Cyclop en 26 Abril 2006, 01:09 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

JuszR

Cita de: LastDragon en 26 Abril 2006, 01:22 AM

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


Citarsi 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
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]

LastDragon

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..

LastDragon



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

marioly

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

Eternal Idol

Cita de: LastDragon en 26 Abril 2006, 01:22 AMMe 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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

JuszR

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. ::)


Cita de: LastDragon en 26 Abril 2006, 05:26 AM
Ya viste el video explicado por el mismo miguel de icaza..
Apenas ahorita voy a ver ese video. ;D
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]