Archivo

Archivo para Mayo, 2007

¿Qué es un Framework?

Miércoles, 16 de Mayo de 2007 Neozeratul Sin comentarios

Un framework en el contexto de la programación es un set de funciones o código genérico que realiza tareas comunes y frecuentes en todo tipo de aplicaciones (creación de objetos, conexión a base de datos, limpieza de strings, etc). Esto brinda una base sólida sobre la cual desarrollar aplicaciones concretas y permite obviar los componentes más triviales y genéricos del desarrollo.

En general, los frameworks son construidos en base a lenguajes orientados a objetos. Esto permite una mejor modularización de los componentes y óptima reutilización de código. Además, en la mayoría de los casos un framework implementará uno o más patrones de diseño de software que aseguren la escalabilidad del producto. Un patrón de diseño es un set de metodologías probadas para resolver problemas comunes en el diseño de aplicaciones. Una convención, si se quiere, que facilita la comprensión de la arquitectura de la aplicación.

Hace mucho existen “frameworks” que facilitan el desarrollo de aplicaciones en diversos ambientes y lenguajes de programación. En el mundo de Java existe Struts, un ambiente muy estable y poderoso, y la iniciativa .NET de Microsoft es una especie de super-framework inspirado en Java. En general, sin embargo, la complejidad de estos ambientes ha relegado el uso de frameworks al desarrollo de aplicaciones grandes y costosas.

Los frameworks y la Web

En el mundo de las “aplicaciones web” menores, habitado por diseñadores gráficos, programadores autodidactas, bajos presupuestos y agendas apretadas, es tradición el uso de lenguajes “de scripting” o interpretados como Perl, Asp o PHP diseñados para transar la potencia de lenguajes de más bajo nivel por mayor facilidad de uso y flexibilidad. Esto permite el rápido desarrollo de aplicaciones, pero al mismo tiempo tiende a producir código de difícil mantención y poco eficiente.

El uso de frameworks en la construcción de aplicaciones pequeñas fue históricamente escaso hasta recientemente cuando, en medio de la “revolución web 2.0″, una compañía de 5 personasBaseCamp, un servicio de administración de proyectos basado en web y construído sobre Rails, un framework de desarrollo web para el poco conocido pero increíblemente versátil lenguaje “Ruby“. lanzó

Rails (más conocido como Ruby on Rails) permite crear aplicaciones web con asombrosa facilidad. Esto, porque el framework ya viene con librerías y funciones que abstraen casi toda la complejidad de trabajar con bases de datos, definir clases e instanciar objetos. Parte de esto se debe a que Ruby es natívamente orientado a objetos (a diferencia de PHP o VBScript) y diseñado para escribir el mínimo de líneas de código posible. Pero la magia de Ruby on Rails está en Rails, el framework, y en su uso inteligente de patrones de diseño conocidos.

En el ámbito del desarrollo para la web, los patrones de diseño más utilizados son aquellos que se centran en separar la presentación (páginas html, css) de la lógica o backend. Esto porque un típico equipo de desarrollo consiste en programadores por un lado y diseñadores por el otro. Separando efectívamente las tareas de cada uno mediante una arquitectura estándar comprendida por todos -un patrón de diseño- facilita enórmemente el trabajo del equipo.
De estos patrones, el más popular es MVC (Modelo Vista Controlador), muy conocido en el mundo de Java y el implementado por Ruby on Rails.

Como su nombre lo dice, MVC consiste en separar lo mejor posible las capas de Modelo (los objetos que interactuan con la base de datos y efectúan los procesos pesados o “lógica de negocios”), la Vista (la presentación final de los datos procesados al cliente, comúnmente en formato HTML) y el Controlador (la capa que se encarga de recibir el input del usuario, delegar el trabajo a los Modelos apropiados e invocar las Vistas que correspondan).

Los frameworks, entonces, suelen ser implementaciones de patrones de diseño conocidos, aderezados con funciones que asisten al desarrollador. Con la aparición de Ruby on Rails, muchas comunidades de desarrolladores -especialmente la de PHP- se han entusiasmado y estan apareciendo decenas de frameworks para ese lenguage. Los más recientes, como Solar o Cerebral Cortex, aprovechan el avanzado modelo de clases y objetos de PHP5, la última versión.

¿Necesito un Framework?

Pero un framework, a veces, puede ser más de lo que se necesita para ciertos proyectos. Siendo plataformas genéricas diseñadas para casi cualquier tipo de desarrollo, para un proyecto pequeño o urgente la cantidad de opciones y dificultad de instalación de un framework pueden ser abrumadores (la mayoría de los frameworks que he visto para PHP requieren actualizaciones de PEAR, lo que no siempre es posible en servidores compartidos). De cualquier modo, un frameworks es la forma en que un desarrollador decide solucionar sus proyectos, un ambiente de trabajo. En esencia un framework es la aplicación rigurosa de los principios básicos que hacen la diferencia entre un programa bien construído y uno malo: economía, modularización, separación de tareas. Incluso si decides no ocupar un framework existente, aplicando estos principios a tu trabajo tarde o temprano terminarás creando el tuyo propio.

Algunos recursos

En este link encontrarán una lista de Frameworks Open Source y temas relacionados que he encontrado, para PHP 4 y 5. Además recomiendo este breve tutorial que muestra una sencilla implementación del patrón MVC en PHP4 (en inglés).

Categories: PROGRAMACION Tags:

Proyecto Mono

Lunes, 14 de Mayo de 2007 Neozeratul Sin comentarios

Mono es el nombre de un proyecto de código abierto impulsado por Novell para crear un grupo de herramientas libres, basadas en GNU/Linux y compatibles con .NET según lo especificado por el ECMA.

Mono posee importantes componentes útiles para desarrollar software:

  • Una máquina virtual de lenguaje común de infraestructura (CLI) que contiene un cargador de clases, un compilador en tiempo de ejecución (JIT), y unas rutinas de recolección de memoria.
  • Una biblioteca de clases que puede funcionar en cualquier lenguaje que funcione en el CLR (Common Language Runtime).
  • Un compilador para el lenguaje C#, MonoBasic (la versión para mono de Visual Basic), Java y Python.
  • El CLR y el Sistema de tipos común (CTS) permite que la aplicación y las bibliotecas sean escritas en una amplia variedad de lenguajes diferentes que compilen para “byte code”
  • Esto significa por ejemplo, que si defines una clase que haga una manipulación algebraica en C#, esa clase puede ser reutilizada en cualquier lenguaje que soporte el “CLI”. Puede crear una clase en C#, una subclase en C++ e instanciar esa clase en un programa en Eiffel.
  • Un sistema de objetos único, sistema de hilos, bibliotecas de clases y sistema recolector de memoria pueden ser compartidos por todos estos lenguajes.
  • Es un proyecto independiente de la plataforma. Actualmente Mono corre sobre Linux, FreeBSD, UNIX, Mac OS X, Solaris y plataformas Windows.

Existe un proyecto similar, llamado Portable.NET, es parte del proyecto dotGNU.

Tabla de contenidos

[ocultar]

//

Historia [editar]

Tan pronto como Microsoft publica los documentos que hablan de la arquitectura .NET en diciembre de 2000, Miguel de Icaza (Co-fundador de la empresa Ximian, fundador y presidente de la GNOME Foundation) comienza a interesarse en ellos.

GNOME siempre había luchado por proporcionar fa
cilidades al programador y una de las características más conocidas es que existen multitud de bindings (adaptadores) para poder utilizar cualquier lenguaje para desarrollar aplicaciones. Pero la elaboración de dichos bindings era tremendamente laboriosa y cada vez que se realizaba un cambio en la interfaz original, era necesario cambiar todos y cada uno de los bindings.

Para intentar mejorar y facilitar la reutilización de código se realizó una implementación de componentes utilizando CORBA llamada Bonobo. Pero tampoco ha tenido éxito ya que era necesario que todo el mundo utilizase esa característica y eso no fue así. Por tanto, con .NET se abre una nueva puerta para conseguir hacer de GNOME en un futuro un escritorio mejor y más atractivo tanto para usuarios como para programadores. Con esta tecnología por fin se consigue lo que el proyecto GNOME siempre había buscado, independencia del lenguaje para programar en dicho escritorio.

Miguel de Icaza, luego de analizar el intérprete del byte code, advierte que no existen especificaciones. En febrero de 2001 comienza a indagar por dicha información en las listas de correo de .NET y al mismo tiempo comienza a trabajar en un compilador C# en cooperación con Rhys Weatherley y Jay Freeman, el mismo fue programado en C# como un ejercicio para demostrar su potencia.

En abril de 2001, la ECMA publica el formato de archivos faltante y en GUADEC (6 al 8 de abril de 2001) Icaza demuestra las habilidades de su compilador. Luego de un minucioso análisis, donde claramente se concluye que es posible construir esa tecnología, Ximian reasigna recursos humanos de otros proyectos y crea el equipo Mono. Aspirando a tener una herramienta que fuese un sustituto completo de la tecnología .NET, formaron The Mono Open Source Project, el cual fue anunciado en julio de 2001, en la conferencia de O’Reilly.

Pasaron 3 años hasta que el 30 de junio de 2004 Mono 1.0 finalmente fue lanzado.


Componentes [editar]

Librerías de clase [editar]

Las librerías de clase proveen un conjunto de facilidades que ayudan al desarrollo de aplicaciones. Son escritas primeramente en C#, pero gracias al lenguaje común de especificación (CLS), las mismas pueden ser invocadas en cualquier otro lenguaje de .NET. Las librerías de clase están estructuradas en NamespacesAssemblies. Cuando hablamos del framework de .NET, nos estamos refiriendo primer lugar a las librerías de clase. y puestas en producción en librerías compartidas denominadas

Namespaces y Assemblies [editar]

Los Namespaces son un mecanismo que permite agrupar lógicamente clases similares en una estructura jerárquica, evitando así conflictos de nombres. La estructura se implementa utilizando palabras separadas por puntos, donde la palabra de primer nivel más común es System, como System.IO o System.Net.

Los assemblies son el paquete físico de las librerías de clase. Son archivos .dll, como por ejemplo las librerías de Windows. Ejemplos de librerías son mscorlib.dll, System.dll, System.Data.dll.

Los Namespaces por lo general están compuestos por muchos assemblies y un assembly puede estar compuesto de varios archivos.

Lenguaje Común de Infraestructura (CLR) [editar]

El lenguaje común de infraestructura o más comúnmente llamado Common Language Runtime (CLR) es implementado por el ejecutable de Mono. El runtime es utilizado para correr aplicaciones compiladas en .NET. Este lenguaje común de infraestructura está definido en los estándares ECMA y ECMA-335. Para ejecutar una aplicación se deberá invocar el runtime con los parámetros adecuados.

Lenguaje Común de Especificación (CLS) [editar]

Se encuentra especificado en el estándar ECMA-335 y define la interfase con el CLR. Por ejemplo, convenciones sobre el tipo de datos que se utilizará para implementar los enumerados. El compilador Mono genera una imagen que cumple con el CLS, esta imagen está codificada en el denominado Common Intermediate Language (CIL) o Lenguaje Intermedio Común. El runtime de Mono toma dicha imagen y la ejecuta.


MonoDevelop: el IDE de Mono [editar]

MonoDevelop es un Entorno Integrado de Desarrollo gratuito, diseñado primordialmente para C# y otros lenguajes .NET como Nemerle, Boo, y Java (via IKVM.NET). MonoDevelop originalmente fue una adaptación de SharpDevelop para Gtk#, pero desde entonces se ha desarrollado para las necesidades de los desarrolladores de Mono. El IDE incluye manejo de clases, ayuda incorporada, completación de código, Stetic (diseñador de GUI), soporte para proyectos, y un depurador integrado.

Aunque MonoDevelop solo puede ejcutarse en Mac y distintas distribuciones de Linux, no es posible hasta el momento ejecutarlo sobre Windows. Sin embargo, un IDE llamado SharpDevelop facilita la compilación de aplicaciones Mono sobre ambiente Windows pero carece de capacidad para depurar dichas aplicaciones(según las características de SharpDevelop Version 1.1). Las versiones 2.0 en adelante incorporan un depurador integrado.

MonoDevelop 0.13 es ultima version de MonoDevelop liberada el 22 de Febrero de 2007.

Mono y las patentes de Microsoft [editar]

La implementación de Mono de esos componentes de .NET no sometidos a ECMA para su estandarización ha levantado algunas preocupaciones de la violación de la patente .

Véase también [editar]

Enlaces externos [editar]

Planetas [editar]

Tutoriales [editar]

Categories: General Tags:

Sun responde a AJAX y Silverlight con JavaFX

Lunes, 14 de Mayo de 2007 Neozeratul Sin comentarios

Según publican Infoworld y CNet News, Sun va a lanzar hoy una familia de productos basados en Java llamada JavaFX en la Conferencia Java One en San Francisco. JavaFX va a competir directamente con AJAX y con el recién lanzado Silverlight de Microsoft. Se dice que JavaFX será un variante de Java enfocada en el desarrollo para el mercado de comunicaciones, incluyendo los escritorios, clientes móviles y TVs. El primer producto será JavaFX Mobile, un sistema para dispositivos móviles.

Categories: NOTICIAS Tags:

Microsoft asegura que el software libre viola sus patentes

Lunes, 14 de Mayo de 2007 Neozeratul Sin comentarios
Microsoft asegura que el software libre viola sus patentes
Según la compañía de Redmond, 235 licencias de su portfolio no han sido respetadas por la comunidad open-source.
Microsoft arremete contra la comunidad del pinguino
Los abogados de Microsoft afirman que el software libre viola exactamente 235 de sus patentes, según se aseguró en un artículo de la revista Fortune. Según declaraciones de Horacio Gutierrez, director de la oficina de licencias del Gigante del Software, “no se trata de unas pocas faltas accidentales, hay una cantidad agobiante de licencias infringidas”.


Por su parte, Brad Smith, abogado y vicepresidente senior de Microsoft, aseguró que el kernel de Linux viola 42 patentes de la compañía, el GUI otras 65, Open Office 45, y los programas de correo electrónico 15. Según la compañía, otros programas de código abierto violan sus licencias en 68 oportunidades.

Ahora que Microsoft ha identificado cuáles de sus patentes no están siendo respetadas, podrían intentar cobrar licencias. La pregunta es, en realidad, de quién puede pretender la empresa fundada por Bill Gates obtener las regalías, si se toma en cuenta que la comunidad de software libre está compuesta por cientas de compañías e individuos. Una posibilidad es que Microsoft arremeta contra los grandes distribuidores comerciales de Linux, como Red Hat o Novell, que entregan el software gratuitamente pero venden servicios de soporte por subscripción.

Categories: NOTICIAS Tags:

Red Hat añade soluciones de negocio a la arquitectura Open Source

Lunes, 14 de Mayo de 2007 Neozeratul Sin comentarios

RHX está disponible para ayudar a los clientes a comparar, comprar y gestionar aplicaciones open source de negocio

Red Hat (NYSE: RHT), el proveedor líder mundial de soluciones de código abierto para la empresa, anuncia hoy la disponibilidad de Red Hat Exchange (RHX). RHX es un nuevo servicio que amplía la estrategia de la arquitectura open source de Red Hat para incluir soluciones de aplicaciones empresariales integradas de los partners de open source construidas sobre Red Hat Enterprise Linux y el software de plataforma JBoss. Los clientes ahora tienen acceso a soluciones líderes de negocio de 14 partners de software de Red Hat, que van desde la gestión de recursos del cliente y business intelligence hasta mensajería y colaboración.

Todas las soluciones se adquieren, se entregan y son soportadas a través de un único acuerdo estándar de suscripción de Red Hat con facturación consolidada que cubre por completo la aplicación. En la web de RHX, los clientes tienen acceso a los perfiles de la aplicación, las valoraciones de los usuarios y las revisiones, demos gratuitas y diferentes opciones de compra de todas las aplicaciones online. Red Hat se coordinará con sus partners ISV y proporcionarán a los clientes un punto único de contacto para todas las cuestiones de soporte de todo el conjunto que compone la aplicación. Además, RHX se puede adquirir a través de partners seleccionados de Red Hat que ofrecen valor añadido y que pueden proporcionar servicios adicionales de soporte a las ofertas de RHX.

“El objetivo de nuestra estrategia de arquitectura open source es ofrecer flexibilidad y opciones a los clientes. RHX apoya este objetivo y redefine la experiencia del software tradicional de negocio haciendo más sencillo la evaluación, las pruebas, el despliegue y la gestión de las soluciones de open source completas”, explicó Donald Fischer, vicepresidente de servicios online de Red Hat. “Las soluciones de partners ensambladas son algunas de las más innovadoras de la industria y comparten el mismo sistema de valores que Red Hat en cuanto que ofrecen una experiencia de cliente excelente y un gran valor”.

Entre las soluciones y los partners RHX se encuentran líderes tecnológicos en gestión de contenidos, gestión de relaciones con los clientes (CRM), plan de recursos empresariales, mensajería y colaboración, business intelligence, bases de datos, backup y recuperación de datos y monitorización de sistemas. Los partners que lanzan RHX son: Alfresco, CentricCRM, Compiere, EnterpriseDB, Groundwork, Jaspersoft, Jive, MySQL, Pentaho, Scalix, SugarCRM, Zenoss, Zimbra y Zmanda.

“Cuando los clientes pueden reducir al mínimo el número de fabricantes con los que negocian y los números asociados de los contratos de soporte, ellos pueden reducir la complejidad y, a menudo, los costes asociados a los contratos de apoyo, por lo que además, reducen la complejidad y el coste asociado con la gestión de cargas de trabajo”, comentó Al Gillen, vicepresidente de investigación de software de sistemas en IDC. “Red Hat ha dado un paso adelante para conseguir controlar la complejidad para sus clientes”.

Para más información sobre RHX, visite http:// www.redhat.com/rhx
RHX se encuentra disponible en abierto para los negocios en http://rhx.redhat.com
Cada solución se ofrece como una única suscripción, todas las suscripciones incluyen todos los componentes de software, documentación y un acuerdo de servicio de nivel constante.

Categories: NOTICIAS Tags: