07 octubre 2010

Tema 1. Evolución de APIs y entornos de programación



                  La API, siglas en inglés para interfaz de programación de aplicaciones, es el lenguaje que comunica un sistema operativo, aplicación o biblioteca con un programa. La API es un conjunto de funciones definidos en bibliotecas (llamadas DLL) que permiten que un programa corra en cierto sistema operativo y hace posible que un determinado programa, que se ejecuta o funciona bajo dicho sistema operativo o plataforma, pueda realizar peticiones y utilizar al propio sistema operativo y también a otros programas existentes.


                  En nuestro caso, un API permite a un desarrollador acceder al hardware desde bibliotecas con funciones de alto nivel, y también las hay de más bajo nivel. Un API a menudo forma parte de SDK (Kit de desarrollo de software).

Ejemplos de APIs:
* API de Windows
* API de Internet Explorer.
* OpenGL: API de gráficos en 3d.
* DirectX.

                  Las funciones API se dividen en varias categorías: depuración y manejo de errores, E/S de dispositivos, varias DLL, procesos e hilos, comunicación entre procesos, manejo de la memoria, monitoreo del desempeño, manejo de energía, almacenamiento, información del sistema, GDI (interfaz para dispositivos gráficos) de Windows (tales como impresoras), interfaz de usuario, APIs gráficas...


API de Windows 

                  Las API de Windows generalmente se concentran en la interacción entre el sistema operativo y una aplicación. Para la comunicación de diferentes aplicaciones entre ellas, Microsoft desarrolló una serie de tecnologías. Primero DDE, luego OLE, y más tarde COM. Dentro de las APIs de Windows podemos encontrar las versiones Win16, Win32, Win32s, Win64... 

                  Para desarrollar programas que funcionen en Windows se necesita un compilador que maneje las DLL y objetos COM específicos de Microsoft, así como también un cierto número de archivos de cabecera de C (header files en inglés, *.h) que definen las interfaces de las DLL. Generalmente se usan las familias de compiladores Visual Studio y Code Gear, pero ahora existen herramientas libres como MinGW y Cygwin.

Dentro de las funcionalidades de la API, tenemos:

- Servicios Base: acceso a los recursos fundamentales disponibles en sistemas Windows como son el sistema de archivos, dispositivos, procesos, acceso al registro de Windows, manejo de errores, etc. 

- Graphics Device Interface (interfaz gráfica): Para mostrar contenido gráfico a los monitores, impresoras y otros dispositivos de salida.

-Interfaz de usuario: Provee la funcionalidad de crear y gestionar las ventanas y los controles más básicos como botones y barras de desplazamiento, entradas desde el mouse y el teclado, y otras funcionalidades asociadas a la parte GUI de Windows. 

-Librería de cajas de diálogos comunes: Proporciona a las aplicaciones las cajas de diálogo estándar para abrir y guardar ficheros, elegircolores y fuentes, etc. La librería reside en el archivo commdlg.dll en Windows 16 bits, y en comdlg32.dll en Windows 32 bits. Está agrupado junto a la categoría Interfaz de Usuario.

-Librería de controles comunes: Da a las aplicaciones acceso a controles avanzados que provee el sistema operativo. Esto incluye la barra de estado, la barra de progreso, barra de herramientas, solapas, etc.

-Shell de Windows: Componente del API de Windows que permite a las aplicaciones acceder a la funcionalidad que provee el shell del sistema operativo. 

-Servicios de red: Da acceso a varias capacidades de red del sistema operativo Windows. Sus subcomponentes incluyen NetBIOS, Winsock, NetDDE, RPC y muchos más.


API de Internet Explorer

                  Internet Explorer también ofrece muchos APIs que pueden ser usados por aplicaciones y pueden considerarse parte del API de Windows pues IE viene integrado con este sistema desde suversión 98. Esa integración se detuvo en Windows Vista.



API de OpenGL

                  OpenGL (Open Graphics Library) es una especificación estándar que define una API multilenguaje y multiplataforma para escribir aplicaciones que produzcan gráficos 2D y 3D. La interfaz consiste en más de 250 funciones diferentes que pueden usarse para dibujar escenas tridimensionales complejas a partir de primitivas geométricas simples, tales como puntos, líneas y triángulos. Fue desarrollada originalmente por Silicon Graphics Inc. (SGI) en 19922 y se usa ampliamente en CAD, realidad virtual, representación científica, visualización de información y simulación de vuelo. También se usa en desarrollo de videojuegos, donde compite conDirect3D en plataformas Microsoft Windows.

Los gráficos de muchos juegos están creados con OpenGL


API de DirectX

                  Microsoft DirectX es una colección de APIs desarrolladas para facilitar las complejas tareas relacionadas con multimedia, especialmente programación de juegos y vídeo, en la plataforma Microsoft Windows. Está especialmente pensada para mejorar las prestaciones gráficas y de sonido de Windows. Mejora la reproducción de vídeo y de audio. Estos controladores son totalmente imprescindibles para muchos juegos, y muy recomendables si usas el ordenador para cualquier tipo de actividad multimedia. La mejor característica de las nuevas versiones de DirectX es el manejo de gráficos en 3D, que va mejorando de forma increíble.

DirectX saca lo mejor de Windows
DirectX consta de las siguientes APIs:

-Direct3D: utilizado para el procesamiento y la programación de gráficos en tres dimensiones (una de las características más usadas de DirectX).
-Direct Graphics: para dibujar imágenes en dos dimensiones (planas), y para representar imágenes en tres dimensiones.
-DirectInput: para procesar datos del teclado, mouse, joystick y otros controles para juegos.
-DirectPlay: para comunicaciones en red.
-DirectSound: para la reproducción y grabación de sonidos de ondas.
-DirectMusic: para la reproducción de pistas musicales compuestas con DirectMusic Producer.
-DirectShow: para reproducir audio y vídeo con transparencia de red.
-DirectSetup: para la instalación de componentes DirectX.
-DirectCompute: lenguaje e instrucciones especiales para el manejo de cientos o miles de hilos de procesamiento, especial para procesadores de nucleos masivos.

                  A pesar de ser desarrollado exclusivamente para la plataforma Windows, se está desarrollando una implementación de código abierto de su API para sistemas Unix (en particular Linux) y X Window System por el proyecto WineHQ, del cual existe fork propietario,Cedega, desarrollada por la empresa de software Transgaming y orientada a la ejecución de juegos desarrollados para Windows bajo sistemas Unix.

DirectX es una completa API multimedia: vídeos, juegos, gráficos, sonidos, mandos, joystick...

En Codase hay información sobre las APIs de Windows, de Linux y de Java...



Entornos de programación

                  Un entorno de desarrollo integrado o, en inglés, Integrated Development Environment ('IDE'), es una aplicación compuesta por un conjunto de herramientas para un programador. Esta herramienta puede ser exclusiva para un lenguaje, o utilizarse para varios.


                  Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación, es decir, consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica GUI. Los IDEs pueden ser aplicaciones por sí solas o pueden ser parte de aplicaciones existentes y se presentan como un marco amigable de trabajo para el desarrollador.

                  Existen muchos lenguajes de programación, los principales son C, C++, pascal, Visual Basic, C#, Java, Phyton y muchos más. Vamos a ver un breve recorrido por la historia de los IDEs existentes para estos lenguajes.

Dev C++

- Turbo C: Turbo C es IDE y compilador para programar en el lenguaje C, desarrollado por Borland. Su primera versión es de 1987 seguido de las versiones 1.5 y 2.0 de 1989. Fue el compilador más popular para desarrollar C en entornos MS-DOS y se le considera el primer IDE para C en esta plataforma. Fue sustituido por el Turbo C++ en 1990 y este a su vez por el Borland C++, disponible ya para Windows. A éste le siguió C++Builder, aunque en septiembre del 2006 Borland lanzó una nueva versión recortada con el nombre de Turbo C++ for Windows recuperando la denominación clásica.

- Dev-C++: Bloodshed Dev-C++ es un entorno de desarrollo integrado para programar en lenguaje C/C++. Usa MinGW que es una versión de GCC (GNU Compiler Colletion) como su compilador. Dev-C++ puede además ser usado en combinación con Cygwin y cualquier compilador basado en GCC. El Entorno está desarrollado en el lenguaje Delphi de Borland. Tiene una página de paquetes opcionales para instalar, con diferentes bibliotecas de código abierto.

- Turbo Pascal: También desarrollado por Borland, es un completo IDE y compilador para el lenguaje de programación Pascal. Funciona bajo CP/M, CP/M-86 y MS-DOS. La versión original de Turbo Pascal fue escrita en 1982 por un joven danés llamado Anders Heilsberg y vendida en Europa como Kompass Pascal. El entorno fue evolucionando para abarcar conceptos como la programación orientada a objetos (POO) introducido en 1989. En el año 1992 Borland presentó la que sería última versión de Turbo Pascal 7.0, compatible con todas la anteriores y que ha introducido mejoras significativas, tanto el entorno integrado de desarrollo como el propio lenguaje Pascal y bibliotecas en tiempo de ejecución, así como nuevas directivas y unidades.

- Anjuta: Anjuta (actualmente Anjuta DevStudio) es un entorno integrado de desarrollo (IDE) para programar en los lenguajes C, C++, Java y Python, en sistemas GNU/Linux. Su principal objetivo es trabajar con GTK y en el escritorio GNOME, además ofrece un gran número de características avanzadas de programación. Anjuta es software libre, liberado bajo la licencia GPL. Incluye un administrador de proyectos, asistentes, plantillas, depurador interactivo y un poderoso editor que verifica y resalta la sintaxis escrita.

- Delphi: Delphi es un entorno de desarrollo de software diseñado para la programación de propósito general con énfasis en la programación visual. En Delphi se utiliza como lenguaje de programación una versión moderna de Pascal llamada Object Pascal. Es producido comercialmente por la empresa estadounidense CodeGear, adquirida en Mayo de 2008 por Embarcadero Technologies. En sus diferentes variantes, permite producir archivos ejecutables para Windows, Linux y la plataforma .NET. CodeGear ha sido escindida de la empresa Borland, donde Delphi se creó originalmente, tras un proceso que pretendía en principio la venta del departamento de herramientas para desarrollo.

- Eclipse: Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores. Esta plataforma, típicamente ha sido usada para desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse). Sin embargo, también se puede usar para otros tipos de aplicaciones cliente.

- NetBeans: NetBeans se refiere a una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un entorno de desarrollo integrado (IDE) desarrollado usando la Plataforma NetBeans. La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software.

- Microsoft Visual Studio: Microsoft Visual Studio es un entorno de desarrollo integrado (IDE, por sus siglas en inglés) para sistemas Windows. Soporta varios lenguajes de programación tales como Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic .NET, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros. Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, así como servicios web en cualquier entorno que soporte la plataforma .NET (a partir de la versión net 2002). Así se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, páginas web y dispositivos móviles.

- Visual Studio 5.0: Microsoft presentó la primera versión de Visual Studio en 1997, incluyendo por primera vez en el mismo paquete muchas de sus herramientas de programación. Visual Studio 5.0 fue lanzado al mercado en dos ediciones: Professional y Enterprise. Visual Studio 5.0 supuso el primer intento de Microsoft para que varios lenguajes utilizaran el mismo entorno de desarrollo. Visual C++, Visual J++, Interdev y MSDN Library hacían uso de un único entorno, denominado Developer Studio. Por otro lado, Visual Basic y Visual FoxPro usaban diferentes entornos.

- Visual Studio 6.0: La siguiente versión, la 6.0, se lanzó en 1998 y fue la última versión en ejecutarse en la plataforma Win9x. Los números de versión de todas las partes constituyentes pasaron a 6.0, incluyendo Visual J++ y Visual InterDev que se encontraban en las versiones 1.1 y 1.0 respectivamente. Aunque el objetivo a largo plazo de Microsoft era unificar todas las herramientas en un único entorno, esta versión en realidad añadía un entorno más a Visual Studio 5.0: Visual J++ y Visual Interdev se separaban del entorno de Visual C++, al tiempo que Visual FoxPro y Visual Basic seguían manteniendo su entorno específico.

- Visual Studio .NET (2002): Tanto en esta versión como en la posterior del 2003 se produjo un cambio sustancial, puesto que supuso la introducción de la plataforma .NET de Microsoft. Visual Studio .NET 2002 supuso también la introducción del lenguaje C#, un lenguaje nuevo diseñado específicamente para la plataforma .NET, basado en C++ y Java. Se presentó también el lenguaje J#, sucesor de J++, el cual, en lugar de ejecutarse en una máquina virtual de Java, se ejecuta únicamente en el framework .NET. El lenguaje Visual Basic fue remodelado completamente y evolucionó para adaptarse a las nuevas características de la plataforma .NET, haciéndolo mucho más versátil y dotándolo con muchas características de las que carecía. Algo similar se llevó a cabo con C++, añadiendo extensiones al lenguaje llamadas Managed Extensions for C++ con el fin de que los programadores pudieran crear programas en .NET. Por otra parte, Visual FoxPro pasa a comercializarse por separado.

- Visual Studio 2005: Visual Studio 2005 se empezó a comercializar a través de Internet a partir del 4 de Octubre de 2005 y llegó a los comercios a finales del mes de Octubre en inglés. En castellano no salió hasta el 4 de Febrero de 2006. Microsoft eliminó .NET, pero eso no indica que se alejara de la plataforma .NET, de la cual se incluyó la versión 2.0. Se incluye un diseñador de implantación, que permite que el diseño de la aplicación sea validado antes de su implantación. También se incluye un entorno para publicación web y pruebas de carga para comprobar el rendimiento de los programas bajo varias condiciones de carga.

- Visual Studio 2008: Visual Studio 2008 introduce una serie de mejoras de desempeño, ecalabilidad y seguridad respecto a las versiones anteriores.

                  El último entorno de desarrollo de Microsoft es el Visual Studio 2010, viene innovando un paso más, llega acompañada por el .NET Framework 4.0 y con atractivos alicientes como la capacidad para usar múltiples monitores, además de su potencia para desarrollar sobre la plataforma Windows 7.



Referencias:


http://codase.com/ Codase, ayuda y funciones completas de las APIs de Windows y Linux

http://www.opengl.org/ Web oficial de OpenGL

http://nehe.gamedev.net/ Tutoriales de OpenGL

http://www.directx.es Web acerca de DirectX

http://es.wikipedia.orgLa enciclopedia online libre

No hay comentarios:

Publicar un comentario