Download 1 4. lenguaje de programació

Document related concepts
no text concepts found
Transcript
TABLA DE CONTENIDO
1.
2.
3.
4.
5.
6.
7.
8.
INTRODUCCION
DESCRIPCION
EL LENGUAJE UNIFICADO DE MODELADO – UML – 1
LENGUAJE DE PROGRAMACIÓN JAVA – 7
PLATAFORMA JAVA – 8
PLATAFORMA .NET – 9
ARQUITECTURA J2EE vs ARQUITECTURA .NET – 12
CONCLUSIONES – 20
1
INTRODUCCION
Los servicios Web aún deben recorrer un largo camino entre estándares,
proveedores de servicios y consumidores de los mismos, pero hasta el momento
Microsoft y específicamente .Net llevan una cierta ventaja sobre J2EE. Aún así,
sigue planeando la cuestión de la independencia de la plataforma. Si .Net no
acaba siendo realmente multiplataforma, posiblemente J2EE predominará en el
desarrollo de servicios Web para grandes empresas y para servicios Web clientes
que requieran no depender de una plataforma específica, y .Net predominará en el
desarrollo de servicios Web para pequeñas y medianas empresas que usan
Windows.
Mas por ahora conforme al desarrollo del entorno parece que lo anteriormente
descrito puede ser un camino seguro, mas vemos que en esta área no todo esta
escrito ya vimos como avanzo Google y los productos que tenia alrededor.
2
2. DESCRIPCION
Por el valor eminentemente técnico del presente documento he decidido intentar
desarrollar la posibilidad 1 que se describe abajo, conforme al modelo declarado
en los documentos AIU.
1. Investigación publicable en revista o foro Internacional de la especialidad.
(Amplío a continuación esta opción)
El objetivo de AIU es procurar que la capacidad de cada uno de los estudiantes
sea reconocida para abrir fronteras. Por lo mismo le solicitamos que su(s)
proyectos(s) tengan un reconocimiento regional y mundial. Sabemos y creemos
que sus aportaciones serán de mucha ayuda; por esto requerimos que el proyecto
sea publicado en alguna revista, periódico y/o otros medios (TV, radio, Internet,
etc.). Previo a la realización de su trabajo consultarlo con la fuente
correspondiente para conocer los requerimientos que se deben cubrir. Una vez
publicado su artículo le pedimos enviar una copia a AIU para su archivo y difusión.
Así las cosas he publicado el texto en www.monografias.com El centro de tesis,
documentos, publicaciones y recursos educativos más amplio de la Red. Con
varios millones de usuarios.
3
3. EL LENGUAJE UNIFICADO DE MODELADO – UML
Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modeling
Language) es el lenguaje de modelado de sistemas de software más conocido y
utilizado en la actualidad; aún cuando todavía no es un estándar oficial, está
respaldado por el OMG 1 (Object Management Group). Es un lenguaje gráfico para
visualizar, especificar, construir y documentar un sistema de software. UML ofrece
un estándar para describir un modelo del sistema, incluyendo aspectos
conceptuales tales como procesos de negocios y funciones del sistema, y
aspectos concretos como expresiones de lenguajes de programación, esquemas
de bases de datos y componentes de software reutilizables.
En otros términos, así como en la construcción de un edificio se realizan planos
previo a su construcción, en software se deben realizar diseños en UML previa
codificación de un sistema, ahora bien, aunque UML es un lenguaje, éste posee
más características visuales que programáticas que facilitan a integrantes de un
equipo multidisciplinario participar e intercomunicarse fácilmente, estos integrantes
son los analistas, diseñadores, especialistas de área y desde luego los
programadores.
Además de haberse convertido en un estándar de facto, UML es un estándar
industrial promovido por el grupo OMG al mismo nivel que el estándar CORBA2
para intercambio de objetos distribuidos. Para la revisión de UML se formaron dos
"corrientes" que promovían la aparición de la nueva versión desde distintos puntos
de vista. Finalmente se impuso la visión más industrial frente a la académica.
Recientemente se ha publicado la versión 2.0 en la que aparecen muchas
novedades y cambios que, fundamentalmente, se centran en resolver carencias
prácticas. Además, esta versión recibe diversas mejoras que provienen del
lenguaje SDL 3.
1
La OMG (Object Management Group) es una asociación sin fines de lucro formada por grandes
corporaciones, muchas de ellas de la industria del software, como por ejemplo: IBM, Apple
Computer, Sun Microsystems Inc y Hewlett-Packard?. Esta asociación se encarga de la definición y
mantenimiento de estándares para aplicaciones de la industria de la computación. Otro de los
estándares definidos por la OMG, además del UML, es CORBA, el cual permite interoperabilidad
multiplataforma a nivel de objetos de negocio.
2
En computación, CORBA (Common Object Request Broker Architecture — arquitectura común de
intermediarios en peticiones a objetos), es un estándar que establece una plataforma de desarrollo
de sistemas distribuidos facilitando la invocación de métodos remotos bajo un paradigma orientado
a objetos. Fue definido y está controlado por el OMG que define las APIs, el protocolo de
comunicaciones y los mecanismos necesarios para permitir la interoperabilidad entre diferentes
aplicaciones escritas en diferentes lenguajes y ejecutadas en diferentes plataformas, lo que es
fundamental en computación distribuida.
3
SDL (Specification and Description Language) es un lenguaje de especificación formal y visual.
Está diseñado para la especificación de sistemas complejos, interactivos, orientados a eventos, de
4
Es importante resaltar que UML es un "lenguaje" para especificar y no para
describir métodos o procesos. Se utiliza para definir un sistema de software, para
detallar los artefactos en el sistema y para documentar y construir. En otras
palabras, es el lenguaje en el que está descrito el modelo. Se puede aplicar en
una gran variedad de formas para dar soporte a una metodología de desarrollo de
software (tal como el Proceso Unificado de Rational 4) pero no especifica en sí
mismo qué metodología o proceso usar.
Hoy en día, esta consolidado como el lenguaje estándar en el análisis y diseño de
sistemas de computo.
Mediante UML es posible establecer la serie de
requerimientos y estructuras necesarias para plasmar un sistema de software
previo al proceso intensivo de escribir código.
Entre más complejo es el sistema que se desea crear más beneficios presenta el
uso de UML, las razones de esto son evidentes, sin embargo, existen dos puntos
claves : El primero se debe a que mediante un plano/visión global resulta más fácil
detectar las dependencias y dificultades implícitas del sistema, y la segunda razón
radica en que los cambios en una etapa inicial (análisis) resultan más fáciles de
realizar que en una etapa final de un sistema como lo seria la fase intensiva de
codificación.
Puesto que UML es empleado en el análisis para sistemas de mediana-alta
complejidad, era de esperarse que su base radicara en otro paradigma empleado
en diseños de sistemas de alto nivel que es la orientación a objetos 5, por lo que
para trabajar en UML puede ser considerado un pre-requisito tener experiencia en
un lenguaje orientado a objetos.
UML cuenta con varios tipos de diagramas, los cuales muestran diferentes
aspectos de las entidades representadas.
Un diagrama Caso de Uso describe lo que hace un sistema desde el punto de
vista de un observador externo, debido a esto, un diagrama de este tipo
generalmente es de los más sencillos de interpretar en UML, ya que su razón de
tiempo real o que presenten un comportamiento paralelo, y donde módulos o entidades
independientes se comuniquen por medio de señales para efectuar su función.
4
El Proceso Unificado Racional (Rational Unified Process en inglés, habitualmente resumido como
RUP) es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado
UML, constituye la metodología estándar más utilizada para el análisis, implementación y
documentación de sistemas orientados a objetos. Es un conjunto de metodologías adaptables al
contexto y necesidades de cada organización. También se conoce por este nombre al software
desarrollado por Rational, hoy propiedad de IBM, el cual incluye información entrelazada de
diversos artefactos y descripciones de las diversas actividades. Está incluido en el Rational Method
Composer (RMC), que permite la personalización de acuerdo a necesidades.
5
La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma
de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de
computadora. Incluye herencia, modularidad, polimorfismo, y encapsulamiento.
5
ser se concentra en un Que hace el sistema, a diferencia de otros diagramas UML
que intentan dar respuesta a un Como logra su comportamiento el sistema.
Un Caso de Uso esta muy relacionado con lo que pudiera ser considerado un
escenario en el sistema, esto es, lo que ocurre cuando alguien interactúa con el
sistema: "Acude un mesero a colocar la orden, la orden es tomada por el cocinero,
y posteriormente se abona a la cuenta del cliente el cargo".
Un Caso de Uso es empleado con más frecuencia en alguna de las siguientes
etapas :
• Determinación de Requerimientos: Por lo general nuevos requerimientos de
sistema generan nuevos usos-casos, conforme es analizado y diseñado el
sistema.
• Comunicación con el Cliente: Debido a la sencillez de este tipo de diagramas,
son fáciles de emplear para comunicarse con el cliente final del proyecto.
• Generación de pruebas de Sistemas: A través de los diagramas uso-caso se
pueden generar una serie de pruebas de sistema.
Un Diagrama de Actividad demuestra la serie de actividades que deben ser
realizadas en un Caso de Uso, así como las distintas rutas que pueden irse
desencadenando.
Es importante recalcar que aunque un diagrama de actividad es muy similar en
definición a un diagrama de flujo (típicamente asociado en el diseño de software),
estos no son lo mismo. Un diagrama de actividad es utilizado en conjunción de un
diagrama caso de uso para auxiliar a los miembros del equipo de desarrollo a
entender como es utilizado el sistema y como reacciona en determinados eventos.
Lo anterior, en contraste con un diagrama de flujo que ayuda a un programador a
desarrollar código a través de una descripción lógica de un proceso. Se pudiera
considerar que un diagrama de actividad describe el problema, mientras un
diagrama de flujo describe la solución.
Un diagrama de actividad incluye los siguientes elementos:
•
•
•
Inicio: El inicio de un diagrama de actividad es representado por un círculo de
color negro sólido.
Actividad : Una actividad representa la acción que será realizada por el sistema
la cual es representada dentro de un ovalo.
Transición: Una transición ocurre cuando se lleva acabo el cambio de una
actividad a otra, la transición es representada simplemente por una linea con
una flecha en su terminación para indicar dirección.
En UML, un diagrama de clases es un tipo de diagrama estático que describe la
estructura de un sistema mostrando sus clases, atributos y las relaciones entre
ellos. Los diagramas de clases son utilizados durante el proceso de análisis y
6
diseño de los sistemas informáticos, donde se crea el diseño conceptual de la
información que se manejará en el sistema, y los componentes que se encargaran
del funcionamiento y la relación entre uno y otro.
A pesar de su status de estándar ampliamente reconocido y utilizado, UML
siempre ha sido muy criticado por su carencia de una semántica precisa, lo que ha
dado lugar a que la interpretación de un modelo UML no pueda ser objetiva. Otro
problema de UML es que no se presta con facilidad al diseño de sistemas
distribuidos. En tales sistemas cobran importancia factores como transmisión,
serialización6, persistencia 7, etc. UML no cuenta con maneras de describir tales
factores. No se puede, por ejemplo, usar UML para señalar que un objeto es
persistente o remoto, o que existe en un servidor que corre continuamente y que
es compartido entre varias instancias de ejecución del sistema analizado.
Por lo anterior se ha desarrollado un nuevo enfoque denominado UML 2.0. En las
versiones previas del UML, se hacía un fuerte hincapié en que UML no era un
lenguaje de programación. Un modelo creado mediante UML no podía ejecutarse.
En el UML 2.0, esta asunción cambió de manera drástica y se modificó el
lenguaje, de manera tal que permitiera capturar mucho más comportamiento. De
esta forma, se permitió la creación de herramientas que soporten la
automatización y generación de código ejecutable, a partir de modelos UML,
mediante la utilización de los siguientes estándares:
•
•
•
•
Superestructura: Es la especificación que se usa todos los días. Aquí se
encuentran todos los diagramas que la mayoría de los desarrolladores
conocen.
Infraestructura: Conceptos de bajo nivel. Meta-Modelo da soporte a la
superestructura, entre otras.
OCL: Lenguaje de restricción. De utilidad para especificar conceptos
ambiguos sobre los distintos elementos del diagrama.
XMI / Intercambio de diagramas: Permite compartir diagramas entre
diferentes herramientas de modelado UML.
6
La serialización es un mecanismo ampliamente usado para transportar objetos a través de una
red, para hacer persistente un objeto en un archivo o base de datos, o para distribuir objetos
idénticos a varias aplicaciones o localizaciones.
7
Se entiende por persistencia en la programación orientada por objetos la capacidad que tienen
los objetos de conservar su estado e identidad entre distintas ejecuciones del programa que los
creó o de otros programas que accedan a ellos. De este modo los objetos pueden clasificarse en:
Transitorios: cuyo tiempo de vida depende directamente del ámbito del proceso que los instanció.
Persistentes: cuyo estado es almacenado en un medio secundario para su posterior reconstrucción
y utilización, por lo que su tiempo de vida es independiente del proceso que los instanció. La
persistencia permite al programador almacenar, transferir y recuperar el estado de los objetos.
Para esto existen varias técnicas: Serialización, motores de persistencia y bases de datos
orientadas a objetos
7
Para lograr los objetivos enunciados, varios aspectos del lenguaje fueron
reestructurados y/o modificados. La especificación se separó en cuatro
especificaciones (paquetes) bien definidas, tal como se muestra en la Figura 1. Es
interesante destacar que el UML 2.0 puede definirse a sí mismo. Es decir, su
estructura y organización es modelable utilizando el propio UML 2.0; de esta
manera, se da un ejemplo de utilización del UML en un dominio distinto al del
desarrollo de software. En este caso, cada paquete del diagrama representa cada
una de las cuatro especificaciones que componen el lenguaje.
::
Figura 1: Especificaciones principales del UML 2.0 8
En UML 2.0 hay 13 tipos diferentes de diagramas 9. Para comprenderlos de
manera concreta, a veces es útil categorizarlos jerárquicamente:
Diagramas de estructura, enfatizan en los elementos que deben existir en el
sistema modelado:
• Diagrama de clases
• Diagrama de componentes
• Diagrama de objetos
• Diagrama de estructura compuesta (UML 2.0)
• Diagrama de despliegue
• Diagrama de paquetes
8
9
Tomado de http://www.epidataconsulting.com/tikiwiki/tiki-read_article.php?articleId=15
Tomado de http://es.wikipedia.org/wiki/Uml
8
Diagramas de comportamiento, enfatizan en lo que debe suceder en el sistema
modelado:
• Diagrama de actividades
• Diagrama de casos de uso
• Diagrama de estados
Diagramas de Interacción, son un subtipo de diagramas de comportamiento, que
enfatiza sobre el flujo de control y de datos entre los elementos del sistema
modelado:
• Diagrama de secuencia
• Diagrama de colaboración
• Diagrama de tiempos (UML 2.0)
• Diagrama de vista de interacción (UML 2.0)
UML se puede aplicar a cualquier lenguaje orientado a objetos tales como Java,
C++, PHP, Ruby, C#, NET y en general cualquiera de los lenguajes soportados
en la plataforma Net de Microsoft. Esto se puede hacer mediante la aplicación de
una metodología como RUP, acrónimo de "Rational Unified Process", una
metodología que permite emplear UML de manera eficiente y de esta forma
evolucionar adecuadamente en el diseño e implementación de un sistema
informático, lo que permite desarrollar sistemas informáticos muy eficientes y
ampliamente documentados y en donde el conocimiento del sistema reside en la
propia empresa y no solo en los sujetos que lo desarrollaron.
El Proceso Unificado tiene varias décadas de desarrollo y uso práctico, desde sus
inicios en el proceso Objectory 10 hasta el Proceso Unificado de Rational (Rational
Unified
Process,
o
RUP).
El RUP es un proceso de desarrollo de software dirigido por casos de uso,
centrado en la arquitectura, iterativo e incremental. RUP pretende implementar las
mejores prácticas en ingeniería de software, con el objetivo de asegurar la
producción de software de calidad, dentro de plazos y presupuestos predecibles.
10
Objectory es una metodología orientada objetos creada sobre todo por Ivar Jacobson, quien es
también responsable de la ingeniería de programas informáticos orientadas objetos.
9
4. LENGUAJE DE PROGRAMACIÓN JAVA
Java es un lenguaje de programación orientado a objetos desarrollado por Sun
Microsystems a principios de los años 1990. El lenguaje en sí mismo toma mucha
de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina
herramientas de bajo nivel como punteros 11. Las aplicaciones Java están
típicamente compiladas en un bytecode 12, aunque la compilación en código
máquina nativo también es posible. En el tiempo de ejecución, el bytecode es
normalmente interpretado o compilado a código nativo para la ejecución, aunque
la ejecución directa por hardware del bytecode por un procesador Java también es
posible.
La implementación original y de referencia del compilador, la máquina virtual y las
librerías de clases de Java fueron desarrollados por Sun Microsystems en 1995.
Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución
del lenguaje a través del Java Community Process, si bien otros han desarrollado
también implementaciones alternativas de estas tecnologías de Sun, algunas
incluso bajo licencias de software libre. Entre noviembre de 2006 y mayo de 2007,
Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia
GNU GPL, de acuerdo con las especificaciones del Java Community Process, de
tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque
la biblioteca de clases de Sun que se requiere para ejecutar los programas Java
todavía no es software libre).
Entre junio y julio de 1994, se reorientó la plataforma hacia la Web. Con el
advenimiento del navegador web Mosaic, los desarrolladores de Java
consideraron que asi se propiciaría que Internet se convirtiese en un medio
interactivo.
El entorno de ejecución era relativamente seguro y los principales navegadores
web pronto incorporaron la posibilidad de ejecutar applets Java incrustadas en las
páginas web.
11
Un puntero es una variable manipulable que referencia una región de memoria; en otras palabras
es una variable cuyo valor es una dirección de memoria. Una forma común de describir la memoria
principal de un ordenador es como una colección de pequeñas cajitas (celdas) que almacenan
datos e instrucciones. Cada celda está identificada unívocamente por un número o dirección de
memoria.
12
El bytecode es un código intermedio más abstracto que el código máquina. Habitualmente se lo
trata como a un fichero binario que contiene un programa ejecutable similar a un módulo objeto,
que es un fichero binario que contiene código máquina producido por el compilador. Como código
intermedio, se trata de una forma de salida utilizada para reducir la dependencia respecto del
hardware específico y facilitar la interpretación. Los programas en bytecode suelen ser
interpretados por un intérprete de bytecode (en general llamado máquina virtual, dado que es
análogo a un computador). Su ventaja es su portabilidad: el mismo código binario puede ser
ejecutado en diferentes plataformas y arquitecturas.
10
Un applet es un componente de una aplicación que se ejecuta en el contexto de
otro programa, por ejemplo un navegador web. El applet debe ejecutarse en un
contenedor, que lo proporciona un programa anfitrión, mediante un plugin13, o en
aplicaciones como teléfonos móviles que soportan el modelo de programación por
applets. A diferencia de un programa, un applet no puede ejecutarse de manera
independiente, ofrece información gráfica y a veces interactúa con el usuario,
típicamente carece de sesión y tiene privilegios de seguridad restringidos. Un
applet normalmente lleva a cabo una función muy específica que carece de uso
independiente.
Un Java applet es un código JAVA que se utiliza principalmente para el trabajo de
páginas web, ya que es un pequeño programa que es utilizado en una página
HTML y representado por una pequeña pantalla gráfica dentro de ésta. Por otra
parte, la diferencia entre una aplicación JAVA y un applet radica en cómo se
ejecutan. Para cargar una aplicación JAVA se utiliza el intérprete de JAVA
De otra parte los servlets son objetos que corren dentro del contexto de un
contenedor de servlets o dentro de un servidor de aplicaciones que además de
contenedor para servlet tendrá contenedor para objetos más avanzados como son
los EJB14. La palabra servlet deriva de applet que, como se dijo arriba, se refiere
a pequeños programas escritos en Java que se ejecutan en el contexto de un
navegador web. Por contraposición, un servlet es un programa que se ejecuta en
un servidor. El uso más común de los servlets es generar páginas web de forma
dinámica a partir de los parámetros de la petición que envíe el navegador web.
5. PLATAFORMA JAVA
La plataforma Java es el nombre de un entorno o plataforma de computación
originaria de Sun Microsystems, capaz de ejecutar aplicaciones desarrolladas
13
Un plugin (o plug-in -en inglés "enchufar"-, también conocido como addin, add-in, addon o addon) es una aplicación informática que interactúa con otra aplicación para aportarle una función o
utilidad específica, generalmente muy específica, como por ejemplo servir como driver o
controlador en una aplicación, para hacer así funcionar un dispositivo en otro programa. Ésta
aplicación adicional es ejecutada por la aplicación principal. Los plugins típicos tienen la función de
reproducir determinados formatos de gráficos, reproducir datos multimedia, codificar/decodificar
emails, filtrar imágenes de programas gráficos, tales como flash, Windows media etc.
14
Un "Java Bean" es un componente utilizado en Java que permite agrupar funcionalidades para
formar parte de una aplicación, como agrupar información personal, datos sobre un pedimento,
requerimientos de ordenes,etc. Un "Enterprise Java Bean" también agrupa funcionalidades para
una aplicación, sin embargo, a diferencia de un "Java Bean" un "Enterprise Java Bean" es un "
deployable component ", el término "deployable component" implica que existe un ambiente de
ejecución , éste ambiente es precisamente un "EJB (Enterprise Java Bean) Container" parte de un
java application server . Un "Java Bean" requiere ser integrado con otros componentes para que
éste sea funcional, mientras un "Enterprise Java Bean" a través de un "EJB Container" puede ser
activado("deployed").
11
usando el Lenguaje de programación Java y un conjunto de herramientas de
desarrollo. En este caso, la plataforma no es un hardware específico o un sistema
operativo, sino más bien una máquina virtual encargada de la ejecución, y un
conjunto de librerías estándar que ofrecen funcionalidad común.
La plataforma es así llamada la Plataforma Java (antes conocida como Plataforma
Java 2[1]), e incluye:
• Plataforma Java, Edición Estándar (Java Platform, Standard Edition), o Java
SE (antes J2SE)
• Plataforma Java, Edición Empresa (Java Platform, Enterprise Edition), o Java
EE (antes J2EE)
• Plataforma Java, Edición Micro (Java Platform, Micro Edition), o Java ME
(antes J2ME)
Desde 2006, la versión actual de la Plataforma Java se conoce tanto por versión
1.5 o versión 5, aunque todas las denominaciones se refieren a la misma versión.
Sin embargo, se prefiere el término versión 5. Una visión general de la multitud de
tecnologías que componen la Plataforma Java puede encontrarse en la página de
documentación del JDK.
La Plataforma Java se compone de un amplio abanico de tecnologías, cada una
de las cuales ofrece una parte del complejo de desarrollo o del entorno de
ejecución en tiempo real. Por ejemplo, los usuarios finales suelen interactuar con
la máquina virtual de Java y el conjunto estándar de bibliotecas. Además, las
aplicaciones Java pueden usarse de forma variada, como por ejemplo ser
incrustadas en una página Web. Para el desarrollo de aplicaciones, se utiliza un
conjunto de herramientas conocidas como JDK (Java Development Kit, o
herramientas de desarrollo para Java).
Java Runtime Environment [editar]
Un programa destinado a la Plataforma Java necesita dos componentes en el
sistema donde se va a ejecutar: una máquina virtual de Java (JVM), y un conjunto
de librerías para proporcionar los servicios que pueda necesitar la aplicación. La
JVM que proporciona Sun Microsystems, junto con su implementación de las
librerías estándar, se conocen como Java Runtime Environment (JRE) o Entorno
en tiempo de ejecución para Java. El JRE es lo mínimo que debe contener un
sistema para poder ejecutar una aplicación Java sobre el mismo. Para el
desarrollo de programas se ofrece un paquete de utilidades y herramientas
conocido como JSDK (Java Software Development Kit).
6. PLATAFORMA .NET
.NET es un proyecto de Microsoft para crear una nueva plataforma de desarrollo
de software con énfasis en transparencia de redes, con independencia de
12
plataforma y que permita un rápido desarrollo de aplicaciones. .NET podría
considerarse una respuesta de Microsoft al creciente mercado de los negocios en
entornos Web, como competencia a la plataforma Java de Sun Microsystems.
A largo plazo Microsoft pretende reemplazar el API Win32 o Windows API15 con la
plataforma .NET. Esto debido a que el API Win32 o Windows API fue desarrollada
sobre la marcha, careciendo de documentación detallada, uniformidad y cohesión
entre sus distintos componentes, provocando múltiples problemas en el desarrollo
de aplicaciones para el sistema operativo Windows. La plataforma .NET pretende
solventar la mayoría de estos problemas proveyendo un conjunto único y
expandible con facilidad, de bloques interconectados, diseñados de forma
uniforme y bien documentados, que permitan a los desarrolladores tener a mano
todo lo que necesitan para producir aplicaciones sólidas.
Debido a las ventajas que la disponibilidad de una plataforma de este tipo puede
darle a las empresas de tecnología y al público en general, muchas otras
empresas e instituciones se han unido a Microsoft en el desarrollo y
fortalecimiento de la plataforma .NET, ya sea por medio de la implementación de
la plataforma para otros sistemas operativos aparte de Windows (Proyecto Mono
de Ximian/Novell para Linux/MacOS X/BSD/Solaris), el desarrollo de lenguajes de
programación adicionales para la plataforma (ANSI C de la Universidad de
Princeton, NetCOBOL de Fujitsu, Delphi de Borland, entre otros) o la creación de
bloques adicionales para la plataforma (como controles, componentes y
bibliotecas de clases adicionales); siendo algunas de ellas software libre,
distribuibles bajo la licencia GPL16.
Con esta plataforma Microsoft incursiona de lleno en el campo de los Servicios
Web y establece el XML 17 como norma en el transporte de información en sus
productos y lo promociona como tal en los sistemas desarrollados utilizando sus
herramientas.
15
La Interfaz de Programación de Aplicaciones, cuyo acrónimo en inglés es API (Application
Programming Interface), es un conjunto de funciones residentes en bibliotecas (generalmente
dinámicas) que permiten que una aplicación corra bajo el sistema operativo Windows. Debido a su
estrecha relación con el desarrollo de software, los programas en sus especificaciones
generalmente explicitan la versión de la API del sistema operativo, mediante diversas
nomenclaturas tales como la versión específica del sistema operativo (para Windows 98, por
ejemplo), o explicitando la versión del conjunto de librerías (Plataforma Win32, etc.).
16
Licencia Pública General (GPL). El autor conserva los derechos de autor (copyright), y permite la
redistribución y modificación bajo términos diseñados para asegurarse de que todas las versiones
modificadas del software permanecen bajo los términos más restrictivos de la propia GPL. Esto
hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser
GPL.
17
XML es un Lenguaje de Etiquetado Extensible muy simple, pero estricto que juega un papel
fundamental en el intercambio de una gran variedad de datos. Es un lenguaje muy similar a HTML
pero su función principal es describir datos y no mostrarlos como es el caso de HTML. XML es un
formato que permite la lectura de datos a través de diferentes aplicaciones.
13
Ahora bien, la W3C18 define "Servicio Web" como un sistema de software
diseñado para permitir interoperatibilidad máquina a máquina en una red. En
general, los servicios web son sólo APIs Web que pueden ser accedidas en una
red, como internet, y ejecutadas en un sistema de hosting remoto. En términos
sencillos, un servicio web es cualquier sistema de software diseñado para soportar
interacción máquina a máquina sobre una red.
En definitiva, permite
comunicación entre diferentes máquinas, con diferentes plataformas y entre
programas distintos. Esta comunicación se logra a través de la adopción de
diversos estándares abiertos.
Esta amplia definición abarca múltiples y diferentes sistemas, pero en general
"servicio web" suele referir a clientes y servidores que se comunican usando
mensajes XML que siguen el estándar SOAP.
.NET intenta ofrecer una manera rápida y económica pero a la vez segura y
robusta de desarrollar aplicaciones - o como la misma plataforma las denomina,
soluciones - permitiendo a su vez una integración más rápida y ágil entre
empresas y un acceso más simple y universal a todo tipo de información desde
cualquier tipo de dispositivo.
Los principales componentes del marco de trabajo son:
• El conjunto de lenguajes de programación
• La Biblioteca de Clases Base o BCL
• El Entorno Común de Ejecución para Lenguajes o CLR por sus siglas en
inglés.
Debido a la publicación de la norma para la infraestructura común de lenguajes
(CLI por sus siglas en inglés), el desarrollo de lenguajes se facilita, por lo que el
marco de trabajo .NET soporta ya más de 20 lenguajes de programación y es
posible desarrollar cualquiera de los tipos de aplicaciones soportados en la
plataforma con cualquiera de ellos, lo que elimina las diferencias que existían
entre lo que era posible hacer con uno u otro lenguaje. Algunos de los lenguajes
desarrollados para el marco de trabajo .NET son: C#, Visual Basic, Delphi (Object
Pascal), C++, J#, Perl, Python, Fortran y Cobol.NET.
18
El Consorcio World Wide Web (W3C) es un consorcio internacional donde las organizaciones
miembro, personal a tiempo completo y el público en general, trabajan conjuntamente para
desarrollar estándares Web. La misión del W3C es: Guiar la Web hacia su máximo potencial a
través del desarrollo de protocolos y pautas que aseguren el crecimiento futuro de la Web.
14
7. ARQUITECTURA J2EE vs ARQUITECTURA .NET 19
Repasando un poco se tiene: J2EE (Java 2 Platform, Enterprise Edition) es, según
la definicion de Sun Microsystems, un conjunto de estándares y especificaciones
para el desarrollo de aplicaciones empresariales basado en la tecnología Java.
Esquemáticamente se resume en la siguiente fórmula
J2EE = Java + Componentes adicionales orientados a empresas (EJBs, JSPs).
La plataforma J2EE ha sido creada con la participación de cientos de empresas de
diversa índole y es, sin lugar a dudas una plataforma conjunta, no exclusiva de
Sun o de ninguna otra compañía. Actualmente se han desarrollado una serie de
herramientas (quizá las más conocidas sean JBuilder, de Borland, y ForteTM de la
propia Sun) comerciales para implementar esta plataforma.
La sintaxis de Java es muy similar a la de otro lenguaje orientada a objetos, pero
su filosofía se encuentra a medio camino entre éste y Smalltalk. Java incorpora un
recolector automático de memoria (garbage collector), al igual que Smalltalk, con
lo que elimina una fuente tradicional de problemas en C/C++. Sin embargo, tal y
como sucede con C++, Java es un lenguaje fuertemente "tipado", en el que se
comprueban los tipos declarados en tiempo de compilación, a diferencia de lo que
sucede en Smalltalk, donde esto se comprueba en tiempo de ejecución (lo cual
suele retrasar el proceso de depuración). Desde su origen, Java dispuso de una
líbrería de clases estándar (al igual que Smalltalk y al contrario de lo que sucedió
con C++, que al principio no tenía). En Java existe un clase básica única: la clase
Object de la cual se derivan todas las otras, de modo similar a lo que ocurre en
Smalltalk, mientras que en C++ una clase no tiene por qué tener una clase base
de la cual derive. Java admite la herencia múltiple (es decir, una clase puede
derivar de varias clases distintas) de un modo distinto a lo que lo hace C++,
usando interfaces. Un interfaz es una colección de nombres de métodos sin
definiciones reales (o lo que es lo mismo: sin implementación) que indican que una
clase tiene un conjunto de comportamientos, además de los que la clase hereda
de sus superclases.
Existe una diferencia esencial entre Java y C++, desde el punto de vista de la
orientación a objetos: no es posible -al igual que ocurre en Smalltalk- utilizar
funciones libres o una programación estructurada en Java, desde un comienzo
hay que programar mediante clases y objetos en Java; sin embargo, en C++ es
posible utilizar funciones libres y realizar programas que no estén orientados a
objetos e incluso utilizar código orientado a objetos y código orientado a
19
Tomado de (ABIÁN, 2003), (SANCHO, 2004), (OSMOSIS LATINA, 2005), (GONZÁLEZ
MORENO, 2006), (ROBERT FRANZ GROUP, 2006), (GOMEZ, 2007), (BARRAPUNTO, 2007),
(GOMEZ, 2007)
15
programación estructurada en un mismo programa, lo cual (con un mal uso) puede
llevar a la escritura de código de dudosa legibilidad. Java, por cuestión de
eficiencia, dispone de tipos de datos primitivos (enteros, carácteres, etc.) que no
son clases, aunque sí tienen clases asociadas, con sus correspondientes
métodos. Lo mismo sucede con C++, pero no con Smalltalk: en este lenguaje
todos los tipos de datos son clases: es un lenguaje OO completamente "puro".
Java, por otra parte, no admite punteros, uno de los principales problemas de los
programadores en C/C++.
Una de las novedades revolucionarias de Java fue la portabilidad: Sun abordó el
problema introduciendo el modelo de bytecodes: cuando un programa Java se
compila no se transforma en un conjunto de instrucciones código máquina nativas
de la plataforma utilizada (lo cual impediría su completa portabilidad), sino que se
transforma en un conjunto de bytecodes independientes de la plataforma utilizada
que son leídos e interpretados por la máquina virtual Java (JVM) para ejecutar el
programa. Por ejemplo, cuando se compila un programa Java en una plataforma
Windows/Intel, se obtiene la misma salida compilada (o los mismos bytecodes)
que en un sistema Macinstosh o Unix.
Esta máquina virtual Java (recibe este nombre porque es una máquina imaginaria
que se implementa emulando por software una máquina real) es una aplicación
que debe ser instalada en el ordenador para que los programas Java puedan ser
ejecutados y será diferente para cada plataforma. A la hora de hacer funcionar una
aplicación Java en una plataforma distinta a aquella en la que se escribió el
programa, bastará con llevar los archivos de bytecodes generados por la primera
plataforma a la otra plataforma (donde deberá haberse instalado la máquina virtual
Java correspondiente a ésta, que será distinta a la máquina virtual Java de la
primera plataforma).
En la práctica, a partir de la aparición de Java 2 (ó Java 1.2) ni siquiera es
necesario que la plataforma de destino tenga la JVM correspondiente, basta con
que tenga instalado el JRE (Java Runtime Environment), que tiene el permiso de
Sun para distribuirse gratuitamente junto con las aplicaciones realizadas por los
desarrolladores. Lógicamente, Sun provee de un gran número de versiones de
JVM y JRE, para distintos ordenadores y sistemas operativos. En resumidas
cuentas: los archivos binarios Java, que se obtienen al compilar el código fuente,
son independientes de la plataforma y pueden ejecutarse en múltiples plataformas
sin necesidad de volver a compilar el archivo fuente, al contrario de lo que sucede
en lenguajes como Visual Basic 6.0 ó Delphi.
Microsoft .Net es, de acuerdo con la definición de Microsoft, una plataforma que
comprende servidores, clientes y servicios. Consiste en un conjunto de
aplicaciones como Visual Studio .Net, los servicios .Net, etc. Esta plataforma es
una implementación basada en estándares abiertos como SOAP, WSDL, C#, y el
CLI (Command Line Interface). Desde el punto de vista del programador, el
16
entorno .NET ofrece un solo entorno de desarrollo para todos los lenguajes que
soporta (actualmente [Abril 2002] unos 30: Visual Basic, C++, C#, Visual J#,
Fortran, Cobol...). La manera en que lo hace se verá más adelante.
La estrategia .Net es innovadora en el sentido de que no compila aplicaciones en
código nativo -es decir, no compila aplicaciones en código específico para Intel o
Mac, por ejemplo-. La compilación, al igual que sucede con Java, se realiza en dos
pasos sucesivos. El código escrito por el programador se compila en el lenguaje
intermedio de Microsoft (MSIL: Microsoft Intermediate Language), del mismo modo
que las instrucciones en Java se convierten en bytecodes. Es entonces cuando el
CLR (CLR: Common Language Runtime ó entorno común de ejecución) de
Microsoft compila en tiempo de ejecución las aplicaciones en código nativo de la
plataforma Intel ó Mac, por ejemplo. El CLR también revisa el código, verificando
la seguridad del mismo y recolectando los objetos para los cuales no existe ya
ninguna referencia (recolección de basura), además de gestionar las excepciones
entre otras tareas. Es inevitable comparar este manera de trabajar con los
bytecodes de Java.
Para generar el código MSIL, los compiladores de .NET utilizan la información
recogida en el CTS (Common Type System), un sistema de tipos comunes en el
que se incluyen todos los tipos de datos, estructuras y operaciones de muchos
lenguajes de alto nivel distintos. Para que el código pueda utilizarse en otras
aplicaciones escritas en otro/otros lenguajes es necesario que los lenguajes
usados cumplan la CLS (Common Language Specification), una especificación de
los tipos de datos, estructuras y operaciones comunes a todos los lenguajes de
programación (y, por tanto, un subconjunto del CTS).
El código escrito en un lenguaje que cumpla la CLS puede ser utilizado en el
entorno .NET en aplicaciones escritas en otros lenguajes que también cumplan la
CLS (Nota: Es precisa la exigencia de que cumplan la CLS, pues el CTS es
demasiado general y podría suceder que un lenguaje A usara características del
CTS de las que otro lenguaje B carece, por lo que no sería posible utilizar código
escrito en A en aplicaciones escritas en B -y viceversa-). Por ejemplo, es posible
definir una clase en C# y derivar una subclase de ella usando Visual Basic .Net,
pues ambos lenguajes se ajustan a la CLS aunque su sintaxis sea muy diferente.
Del mismo modo, y por poner otro ejemplo, un bucle que imprima diez veces el
tradicional mensaje "Hola Mundo" se escribirá de distinta manera en C# y Visual
Basic .Net (o en lenguajes de terceras partes como Fortran, Cobol, etc.), pero los
compilador de estos lenguajes -si cumplen la CLS- generarán el mismo código
MSIL.
Por otro lado, Visual Basic Net ha experimentado un profundo cambio y puede ya
ser considerado como un verdadero lenguaje orientado a objetos. Estos cambios
se deben a que debe cumplir la CLS para que pueda utilizarse junto a otros
lenguajes de la plataforma .NET en aplicaciones .NET. Sólo en VB 4.0 se
17
introdujeron algunas de las características de la orientación a objetos, pero ni
siguiera en la versión 6.0 se implementaron todas.
C# —C Sharp— es un nuevo lenguaje de programación incluido en la plataforma
.Net por vez primera. Es un lenguaje orientado a objetos fuertemente "tipado",
diseñado por Microsoft para obtener una elevado rendimiento con una relativa
simplicidad del lenguaje. Como ya se ha apuntado antes, pero vale la pena
remarcar este punto, la plataforma .NET está centrada en torno al Common
Languaje Runtime (similar a la Java Virtual Machine de Sun) y a un conjunto de
bibliotecas que pueden ser usadas por una amplia variedad de lenguajes capaces
de trabajar conjuntamente al ser compilados todos en el lenguaje intermedio MSIL,
ya citado anteriormente. C# juega un importante papel en .NET porque ha sido
diseñado para trabajar de forma óptima con .NET y ciertas características de .NET
se implementaron pensando en que su rendimiento fuera óptimo con C# (de
hecho, algunas bibliotecas de .NET como Collection, XML, ADO+, ASP+, GDI+ y
otras fueron escritas en C#).
A la vista del lenguaje, puede decirse que fue concebido basándose en Java y
C++. Algunas (no todas) de las similitudes entre Java y C# son las siguientes:
• Ambos lenguajes compilan un código independiente de la máquina y el sistema
operativo que se ejecuta mediante sus correspondientes entornos (JVM o
entorno .NET).
• Incorporan un "recolector de basura".
• No necesitan punteros (Java no los permite y C# permite un uso restringido
dentro del código señalado como unsafe (inseguro).
• No se utilizan ficheros de cabecera (como en C y C++), todo el código se
empaqueta en packages (Java) o assemblies (C#).
• Admiten hilos (threads).
• Admiten herencia múltiple mediante interfaces.
• Permiten clases internas (clases en el interior de otras clases).
• No admiten programación estructurada, cualquier "cosa" pertenece a una
clase.
Entre las ventajas mencionadas por Microsoft de utilizar este lenguaje,
sintácticamente también parecido a Java, es que ha sido diseñado pensando en
Internet y arquitecturas de componentes: En C#, cualquier objeto puede
representarse como un objeto COM, permitiendo una integración relativamente
sencilla con aplicaciones escritas en otros lenguajes.
Posiblemente, C# se utilizará para escribir aplicaciones (o partes de aplicaciones)
que requieran un alto rendimiento (como el que podría proporcionar C ó C++) sin
tener necesidad de preocuparse de aspectos como la gestión de la memoria, la
construcción de bibliotecas de bajo nivel, la comprobación de los índices de los
arrays, etc.
18
La plataforma .Net permite utilizar un lenguaje llamado Visual J# (todavía no he
tenido la ocasión de utilizarlo, por lo que me baso en lo comentado de forma oficial
por Microsoft y algunos articulistas independientes), que implementa casi de forma
completa el JDK 1.1.4 (Java Development Kit) de Sun dentro de .Net. Al igual que
sucedía con Visual J++, el JNI (Java Native Interface) ha sido excluido de Visual
J#. Aunque aún es pronto para juzgar este lenguaje y sus herramientas de
desarrollo asociadas, posiblemente tendrá una fuerte dependencia del entorno
Windows. De todos modos, debido a que solo alcanza hasta el JDK 1.1.4 (quizás
por los problemas legales que tuvo y tiene Microsoft con Sun) estará en
desventaja con J2EE, cuya última versión utiliza el SDK 1.4.x.
La plataforma .NET se ha diseñado teniendo muy presente los servicios Web, una
nueva forma de enfocar el negocio del software que puede decirse que los
servicios Web son una prolongación lógica de la arquitectura cliente/servidor.
Las consecuencias que se derivan del uso de los servicios Web cambian
totalmente las reglas del juego: los usuarios pueden optar por alquilar los
componentes que necesiten, que siempre estarán actualizados, sin necesidad de
comprar aplicaciones completas mediante el sistema actual de licencias. Aún así,
pese al entusiasmo despertado en la comunidad de programadores alrededor de
los servicios Web, aún hay un largo camino que recorrer (unificación de
estándares, adaptación de las empresas y consumidores a estos servicios).
Como similitudes entre las plataformas en discusión puede decirse:
•
•
•
•
•
El propósito tanto de J2EE como de la plataforma .NET es facilitar y simplificar
el desarrollo de aplicaciones empresariales o corporativas. De cara al comercio
electrónico, las JSP (Java Server Pages) son muy similares a ASP (Active
Server Pages) o a su descendiente ASP .Net, y los EJB (Enterprise
JavaBeans) son muy similares a los COM/COM+ de Microsoft.
Los servidores de aplicaciones J2EE y .Net proporcionan un modelo de acceso
de componentes a datos y de lógica del negocio, separados por una capa
intermedia de presentación implementada mediante ASP .Net (:Net) ó Servlets
(J2EE).
Visual Basic .Net y C# son lenguajes orientados a objetos, al igual que Java, y
en su diseño ha tenido mucha importancia la existencia de Internet.
Desde la perspectiva de los desarrolladores, J2EE y .Net proporcionan las
herramientas para crear Servicios Web.
Tal y como se ha expuesto J2EE y .Net son multiplataforma. Al usar .Net una
compilación en dos pasos, le permitiría teóricamente proporcionar en el futuro
entornos de ejecución para diferentes plataformas de forma similar a Java y
sus JREs y SDKs.
19
Ahora como ventajas de .Net frente a J2EE
1. Una ventaja muy importante del entorno .Net frente a J2EE es la posibilidad de
emplear múltiples lenguajes de programación, mientras que J2EE sólo trabaja
con uno: Java. Aunque sin duda algún teórico pensara que lo ideal sería que
solo hubiera un lenguaje de programación (a ser posible estandarizado), esta
idea es tan utópica como pensar que el esperanto acabará substituyendo a
otros idiomas humanos. La realidad es que esta alta diversidad de lenguajes es
obligatoria por la misma variedad de las necesidades de los programadores.
Todavía hoy existen más líneas de código escritas en Cobol que en C++ ó
Java. Un lenguaje moderno y orientado a objetos como Java puede resultar
totalmente ineficaz -y hasta inadecuado- a la hora de abordar problemas que
involucren cálculos matemáticos masivos y complejos, mientras que esos
mismos cálculos pueden ser abordados mucho más adecuadamente con un
lenguaje tan primitivo como Fortran 77. Por otro lado, .Net posibilita así que
programadores de terceros lenguajes pasen a esta plataforma reduciendo el
tiempo de aprendizaje y entrenamiento.
2. Las herramientas de desarrollo incluidas por Microsoft en su Visual Studio .Net
son mucho más simples, intuitivas y sencillas de manejar que las herramientas
de desarrollo equivalentes en J2EE suministradas por otras empresas (entre
ellas la propia Sun). Cualquier programador medio/avanzado se manejará
rápidamente con la programación del interface de usuario en Visual Studio
.Net, al igual que sucedía con versiones anteriores de Visual Studio.
3. C# es un lenguaje interesante, fácil de aprender por los programadores de
Java (de hecho, Microsoft ofrece un conversor de Java a C#), que en caso de
estandarizarse podría resultar un lenguaje muy conveniente para ciertas tareas
de programación en diferentes plataformas. No está escrito en ninguna parte
que los lenguajes no puedan evolucionar (de hecho, tanto los lenguajes de
programación como los lenguajes humanos lo hacen) y, en ese sentido, C# es
una rama evolutiva más del árbol de los lenguajes orientados a objetos.
4. Microsoft ha impulsado con gran energía los servicios Web y ha resaltado su
importancia entre toda la comunidad de desarrolladores (utilicen o no los
productos de esta compañía). La plataforma .Net se ha diseñado considerando
los servicios Web (mientras que J2EE no) siendo estos servicios propios de la
plataforma y ofrece una nueve versión de ASP, ASP .Net, que puede
considerarse un entorno de programación "de verdad" en lugar de un entorno
basado en scripts.
En términos de la propia Microsoft ".Net fue construido para la integración a través
de los servicios Web XML usando protocolos y formatos de ficheros como SOAP
(Simple Object Access Protocol), WSDL (Web Services Description Language), y
UDDI (Universal Description, Discovery, and Integration)". Comparativamente, .Net
20
va por delante con respecto a J2EE con respecto a servicios Web y estos servicios
son propios de la plataforma, aunque J2EE respondió ya con el lanzamiento del
Java Web Services Developer Pack. De todos modos, la facilidad, rapidez y
sencillez con la que se pueden construir servicios Web con el Asistente de
servicios Web de Visual Studio .Net son muy superiores a las de las herramientas
para construir servicios Web dentro del entorno de J2EE.
Ventajas de J2EE frente a .Net :
1. Las implementaciones de J2EE pueden adquirirse a distintas compañías,
mientras que .Net solo puede comprarse a Microsoft. El hecho de que haya
distintas organizaciones implementando J2EE ofrece mayor variedad para los
usuarios finales y permite la existencia de una cierta competencia entre ellas
para obtener mejores productos que no existe en el caso de Microsoft y su
.Net.
2. Debido al proceso evolutivo de los productos de Microsoft, y en muchos casos,
por motivos de compatibilidad la seguridad frente a virus informáticos de los
productos de Microsoft es menor que los basados en Java, pues desde un
comienzo Java se fundamentó en un estricto modelo de seguridad.
3. Como se ha escrito ya, las aplicaciones Java pueden correr en una amplia
gama de sistemas operativos (desde sistemas empresariales como Windows
2000, OS/390, Solaris, HP-UX, IRIX u otras versiones de Unix hasta en
sistemas orientados más a ordenadores personales como Mac OS, Windows
9x ó Linux ,y en sistemas operativos para dispositivos móviles) y de
arquitecturas hardware. Hasta la fecha, .Net corre solamente sobre sistemas
operativos de Microsoft (aunque esta situación podría cambiar en el futuro),
siendo J2EE el único entorno de desarrollo que ofrece una independencia real
de la plataforma.
4. La tecnología Java es una tecnología abierta (en el sentido de que el código de
la plataforma completa puede ser obtenido, revisado y estudiado por cualquiera
que esté interesado) y se basa en gran parte en estándares de organizaciones
de normalización y estándares empresariales "de facto". Esto posibilita que los
desarrolladores puedan conocer y entender completamente cómo hace las
cosas Java y aprovecharlo para sus aplicaciones y, por otro lado, al basarse en
estándares empresariales, simplifica la integración con productos de múltiples
compañías. En contraposición, solo el código fuente del Nuevo lenguaje C# de
la plataforma .Net ha sido abierto al público general (aunque Microsoft permite
a compañías con las que le unen intereses comunes el acceso al código fuente
de ciertas partes de .Net).
5. Aunque Java fue creado originalmente por una compañía: Sun MicroSystems,
lo cierto es que J2EE es ahora el producto de la colaboración de más de 400
21
empresas y organizaciones de todo tipo (públicas, privadas sin ánimo de lucro,
privadas con ánimo de lucro, y de normalización en ámbitos nacionales e
internaciones). La plataforma .Net es -y será- el producto de una sola
compañía, que aunque haya implementado algunos estándares en .Net y esté
intentando conseguir que ciertos tecnologías se conviertan en estándares
"oficiales", no puede tener el mismo consenso que .Net (sobretodo teniendo en
cuenta que la mayor parte de su código no es público).
6. La tecnología Java goza ya de una cierta veteranía (6 años en el mercado).
J2EE y ha probado su eficacia en muchos entornos y situaciones
empresariales distintas, mientras que .Net ha visto oficialmente la luz el
presente año.
22
8. CONCLUSIONES
Java es un lenguaje destinado a perdurar entre la comunidad programadora.
Aunque Microsoft insista en que dentro de la estrategia .Net Java es un lenguaje
más, lo cierto es que se ha extendido tanto entre la comunidad programadora,
docente e investigadora que su futuro es incluso prometedor, pese a la fuerte
competencia de Microsoft. Posiblemente muchos programadores de C++
acabarán programando en C#, por la propia naturaleza de las aplicaciones que
desarrollan, pero también muchos de ellos terminaron programando en Java al
desarrollar aplicaciones orientadas a la Red.
Hasta el momento, la plataforma J2EE es la única plataforma que corre en
múltiples sistemas operativos y múltiples máquinas hardware y cuyos usuarios
pueden seleccionar la implementación que más le convenga. Esta plataforma
corre actualmente no solo en ordenadores doméstico o servidores o estaciones de
trabajo, sino también en multitud de dispositivos como teléfonos móviles, agendas
electrónicas, componentes electrónicos industriales de automatización, etc. Su
implantación en el mercado de la tos teléfonos móviles GMS y UMTS puede
asegurar un próspero futuro, puesto que es más que probable que acaben
convirtiéndose en un medio generalizado de acceso a Internet. Java ya ha hecho
realidad el sueño de "escriba el código una vez, ejecútelo en cualquier parte".
Tal y como se señaló antes, es perfectamente posible que Microsoft proporcione
en el futuro entornos de ejecución .NET para diferentes plataformas de forma
similar a Sun (como para Windows 64 bits sobre Itanium ó para un Windows CE
sobre un Pocket PC), pero aún no lo ha hecho para plataformas no Windows, y
sería raro que lo hiciera por su propia estrategia de mercado hasta la fecha. Aún
así, llegaría con un retraso considerable con respecto a J2EE. Por otro lado, no
debe olvidarse que en el pasado anuncios de traslados de tecnologías Microsoft,
por parte de la misma compañía, a otras plataformas (componentes DCOM, por
ejemplo) no llegaron a materializarse.
Por otro lado, la penetración de Microsoft en el mercado de los grandes sistemas
corporativos y en las aplicaciones empresariales de alto nivel no es excesivamente
alta. En la elaboración de J2EE han participado multitud de empresas, muchas de
ellas especializadas en dar servicio software/hardware a grandes empresas y
sistemas corporativos y que, por tanto, conocen muy bien ese sector del mercado
informático. Esta pluralidad, también hace más probable que J2EE acabe
convirtiéndose en un estándar "de facto", al haber sido desarrollado con la
participación de muchas empresas que, inevitablemente, habrán mirado hacia sus
propios productos a la hora de elaborarlo. J2EE quizá no llegue a convertirse en
un estándar tipo ISO ó IEEE, pero al fin y al cabo el protocolo TCP/IP también es
un estándar "de facto".
23
Tal y como ya se ha comentado, dentro del Visual Studio .Net el lenguaje Visual
Basic .Net es un verdadero lenguaje orientado a objetos. Esta conversión es un
lenguaje 100% orientado a objetos –OO-. -quizá, por otro lado, inevitable- no deja
de tener sus inconvenientes: aunque muchos programadores profesionales
consideraban a VB como un lenguaje menor, era (y es) el lenguaje más utilizado
del planeta debido sobretodo a su sencillez. Con VB .Net, se precisan unos
conocimientos sólidos de programación OO para apreciar en profundidad las
ventajas del mismo y realizar programas que aprovechen todas sus posibilidades.
Un programador que posea todos estos conocimientos optará probablemente por
trabajar en C# ó Java, que tienen una sintaxis más estándar. Quién sabe, quizás
suprimir la sencillez de Visual Basic en aras de hacerlo más moderno acabe con
su principal encanto.
C# es un lenguaje que puede convertirse en una estupenda herramienta para
desarrolladores que quieran elaborar código de alta eficiencia, sin tener que
nadar/naufragar en C++, pero aún es pronto para poder afirmar nada seguro sobre
su futuro. Aún así, es un lenguaje de alta calidad y que seguramente será ideal
para programar dentro de .Net por su simbiosis con el mismo.
24
BIBLIOGRAFIA
GUIMPEL, FEDERICO. UML para programadores JAVA. Tomado de:
http://www.ccirosario.org.ar/cursos/uml_para_java
ABIÁN, MIGUEL ÁNGEL. J2EE y .NEt: la rivalidad permanente. 2003.
http://www.willydev.net/descargas/Articulos/General/j2eenet.aspx
www.aidima.es
http://www.devjoker.com/contenidos/Articulos/42/J2EE-Y-NET-LA-RIVALIDADPERMANENTE.aspx
http://www.devjoker.com/asp/impresion_contenido.aspx?co_contenido=42
http://www.javahispano.org/contenidos/es/comparativa_j2ee___net/
ANACLETO, VALERIO ADRIAN. Introducción a UML 2.0. La evolución de la
programación hacia la ejecución y validación automática de modelos. Tomado de
http://www.epidataconsulting.com/tikiwiki/tiki-read_article.php?articleId=15
BARRAPUNTO. NET vs J2EE. 2007.
http://barrapunto.com/article.pl?sid=05/05/08/1810219
OSMOSIS LATINA. J2EE vs .NET un Analisis Tecnico Objetivo. 2005.
http://www.osmosislatina.com/java/index.htm
GONZÁLEZ MORENO, OSCAR. 2EE vs. .NET. 2006
www.consultec.es/DocInformes/j2ee%20VS%20NET.pdf
ROBERT FRANZ GROUP. Otro estudio sobre J2EE. Citado por Ciberaula. 2007.
http://www.rfgonline.com/
http://java.ciberaula.com/noticia/estudio_j2ee_net/
SANCHO, LUIS. .NET vs J2EE. 2004
http://www.deltablog.com/2005/06/08/net-vs-j2ee/
Seba Gomez's Weblog: J2EE vs. .Net. why?. 2007.
http://sgomez.blogspot.com/2005/08/j2ee-vs-net-why.html
http://www.javahispano.org/contenidos.item.action?id=1055&menuId=ARTICLES
http://es.wikipedia.org/wiki/Lenguaje_Unificado_de_Modelado
http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java
http://www.w3c.es/
25