viernes, 3 de marzo de 2017
Arquitectura del sistema operativo android
Arquitectura del sistema operativo android.
Android es un sistema operativo basado en el núcleo Linux. Fue diseñado principalmente para dispositivos móviles con pantalla táctil, como teléfonos inteligentes, tablets o tabléfonos; y también para relojes inteligentes, televisores y automóviles. Inicialmente fue desarrollado por Android Inc., empresa que Google respaldó económicamente y más tarde, android fue presentado en 2007 junto la fundación del Open Handset Alliance (un consorcio de compañías de hardware, software y telecomunicaciones) para avanzar en los estándares abiertos de los dispositivos móviles. El primer móvil con el sistema operativo Android fue el HTC Dream y se vendió en octubre de 2008. Los dispositivos de Android venden más que las ventas combinadas de Windows Phone e IOS.
Esquema.
APLICACIONES.
La capa superior de esta pila software la forman, como no podría ser de otra forma, las aplicaciones. En este saco se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, tanto las nativas (programadas en C o C++) como las administradas (programadas en Java), tanto las que vienen de serie con el dispositivo como las instaladas por el usuario.
Aquí está también la aplicación principal del sistema: Inicio (Home), también llamada a veces lanzador (launcher), porque es la que permite ejecutar otras aplicaciones proporcionando la lista de aplicaciones instaladas y mostrando diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o incluso pequeñas aplicaciones incrustadas o widgets, que son también aplicaciones de esta capa.
Lo principal a tener en cuenta de esta arquitectura es que todas las aplicaciones, ya sean las nativas de Android, las que proporciona Google, las que incluye de serie el fabricante del teléfono o las que instala después el usuario utilizan el mismo marco de aplicación para acceder a los servicios que proporciona el sistema operativo. Esto implica dos cosas: que podemos crear aplicaciones que usen los mismos recursos que usan las aplicaciones nativas (nada está reservado o inaccesible) y que podemos reemplazar cualquiera de las aplicaciones del teléfono por otra de nuestra elección. Este es el verdadero potencial de Android y lo que lo diferencia de su competencia: control total por parte del usuario del software que se ejecuta en su teléfono.
MARCO DE APLICACIÓN.
La siguiente capa la forman todas las clases y servicios que utilizan directamente las aplicaciones para realizar sus funciones y que, obviamente, se apoyan en las bibliotecas y en el entorno de ejecución que ya hemos detallado. La mayoría de los componentes de esta capa son bibliotecas Java que acceden a los recursos a través de la máquina virtual Dalvik. Entre las más importantes se encuentran las siguientes:
- Administrador de actividades (Activity Manager): se encarga de controlar el ciclo de vida de las actividades y la propia pila de actividades. Sin entrar en muchos detalles ahora, las actividades se pueden definir como las ventanas que se muestran, una sobre otra, en la pantalla del dispositivo Android (usando un concepto de ventana similar al de los sistemas operativos gráficos de PC, aunque el funcionamiento en Android sea muy diferente).
- Administrador de ventanas (Windows Manager): se encarga de organizar lo que se muestra en pantalla, creando superficies que pueden ser rellenadas por las actividades.
- Proveedor de contenidos (Content Provider): permite encapsular un conjunto de datos que va a ser compartido entre aplicaciones creando una capa de abstracción que hace accesible dichos datos sin perder el control sobre cómo se accede a la información. Por ejemplo, uno de los proveedores de contenido existentes permite a las aplicaciones acceder a los contactos almacenados en el teléfono. Esta biblioteca nos permite crear también nuestros propios proveedores para permitir que otras aplicaciones accedan a información que gestiona la nuestra.
- Vistas (Views): si antes equiparábamos las actividades con las ventanas de un sistema operativo de PC, las vistas las podríamos equiparar con los controles que se suelen incluir dentro de esas ventanas. Android proporciona numerosas vistas con las que construir las interfaces de usuario: botones, cuadros de texto, listas, etc. También proporciona otras más sofisticadas, como un navegador web o un visor de Google Maps.
- Administrador de notificaciones (Notification Manager): proporciona servicios para notificar al usuario cuando algo requiera su atención. Normalmente las notificaciones se realizan mostrando alerta en la barra de estado, pero esta biblioteca también permite emitir sonidos, activar el vibrador o hacer pardear los LEDs del teléfono (si los tiene).
- Administrador de paquetes (Package Manager): las aplicaciones Android se distribuyen en paquetes (archivos .apk) que contienen tanto los archivos .dex como todos los recursos y archivos adicionales que necesite la aplicación, para facilitar su descarga e instalación. Esta biblioteca permite obtener información sobre los paquetes actualmente instalados en el dispositivo Android, además de gestionar la instalación de nuevos paquetes.
- Administrador de telefonía (Telephony Manager): proporciona acceso a la pila hardware de telefonía del dispositivo Android, si la tiene. Permite realizar llamadas o enviar y recibir SMS/MMS, aunque no permite reemplazar o eliminar la actividad que se muestra cuando una llamada está en curso (por motivos de seguridad).
- Administrador de recursos (Resource Manager): proporciona acceso a todos los elementos propios de una aplicación que se incluyen directamente en el código: cadenas de texto traducidas a diferentes idiomas, imágenes, sonidos e incluso disposiciones de las vistas dentro de una actividad (layouts). Permite gestionar esos elementos fuera del código de la aplicación y proporcionar diferentes versiones en función del idioma del dispositivo o la resolución de pantalla que tenga, por ejemplo.
- Administrador de ubicaciones (Location Manager): permite determinar la posición geográfica del dispositivo Android (usando el GPS o las redes disponibles) y trabajar con mapas.
- Administrador de sensores (Sensor Manager): permite gestionar todos los sensores hardware disponibles en el dispositivo Android: acelerómetro, giroscopio, sensor de luminosidad, sensor de campo magnético, brújula, sensor de presión, sensor de proximidad, sensor de temperatura, etc.
- Cámara: proporciona acceso a las cámaras del dispositivo Android, tanto para tomar fotografías como para grabar vídeo.
- Multimedia: conjunto de bibliotecas que permiten reproducir y visualizar audio, vídeo e imágenes en el dispositivo.
ENTORNO DE EJECUCION.
El entorno de ejecución de Android, aunque se apoya en las bibliotecas enumeradas anteriormente, no se considera una capa en sí mismo, dado que también está formado por bibliotecas. En concreto, las bibliotecas esenciales de Android, que incluyen la mayoría de la funcionalidad de las bibliotecas habituales de Java así como otras específicas de Android.
El componente principal del entorno de ejecución de Android es la máquina virtual Dalvik, componente que ejecuta todas y cada una de las aplicaciones no nativas de Android. Las aplicaciones se codifican normalmente en Java y son compiladas, pero no para generar un ejecutable binario compatible con la arquitectura hardware específica del dispositivo Android. En lugar de eso, se compilan en un formato específico para la máquina virtual Dalvik, que es la que las ejecuta. Esto permite compilar una única vez las aplicaciones y distribuirlas ya compiladas teniendo la total garantía de que podrán ejecutarse en cualquier dispositivo Android que disponga de la versión mínima del sistema operativo que requiera cada aplicación.
Aunque las aplicaciones se escriben en Java, Dalvik no es realmente una máquina virtual Java. Es decir, no es compatible con el bytecode Java (instrucciones ejecutables independientes de la arquitectura hardware) que ejecutan las máquinas virtuales Java normales. Java se usa únicamente como lenguaje de programación, pero los ejecutables que se generan con el SDK de Android no son ejecutables Java convencionales y, por lo tanto, no se pueden ejecutar en máquinas virtuales Java convencionales. Durante el proceso de compilación de los programas Java (normalmente archivos .java) sí que se genera, de forma intermedia, el bytecode habitual (archivos .class). Pero esos archivos son convertidos al formato específico de Dalvik en el proceso final (.dex, de Dalvik executable).
Google hace esto por una cuestión de optimización. Los archivos .dex son mucho más compactos que los .class equivalentes (hasta un 50% menos de tamaño), lo que permite ahorrar espacio en el teléfono (algo siempre escaso) y acelerar el proceso de carga. Además, a diferencia de las máquinas virtuales tradicionales, Dalvik se basa en registros en lugar de una pila para almacenar los datos, lo que requiere menos instrucciones. Esto permite ejecuciones más rápidas en un entorno con menos recursos.
Las aplicaciones Android se ejecutan cada una en su propia instancia de la máquina virtual Dalvik, evitando así interferencias entre ellas, y tienen acceso a todas las bibliotecas mencionadas antes y, a través de ellas, al hardware y al resto de recursos gestionados por el kernel.
BIBLIOTECAS.
La capa que se sitúa justo sobre el kernel la componen las bibliotecas nativas de Android (también mal llamadas librerías, por el término inglés libraries). Estas bibliotecas están escritas en C o C++ y compiladas para la arquitectura hardware específica del teléfono, tarea que normalmente realiza el fabricante, que también se encarga de instalarlas en el terminal antes de ponerlo a la venta. Su cometido es proporcionar funcionalidad a las aplicaciones, para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y garantizando que se llevan a cabo de la forma más eficiente (en teoría, al menos).
Estas son algunas de las bibliotecas que se incluyen habitualmente:
- Gestor de superficies (Surface Manager): se encarga de componer las imágenes que se muestran en la pantalla a partir de capas gráficas 2D y 3D. Cada vez que la aplicación pretende dibujar algo en la pantalla, la biblioteca no lo hace directamente sobre ella. En vez de eso, realiza los cambios en imágenes (mapas de bits) que almacena en memoria y que después combina para formar la imagen final que se envía a pantalla. Esto permite realizar con facilidad diversos efectos: superposición de elementos, transparencias, transiciones, animaciones, etc.
- SGL (Scalable Graphics Library): desarrollada por Skia (empresa adquirida por Google en 2005) y utilizada tanto en Android como en Chrome (navegador web de Google), se encarga de representar elementos en dos dimensiones. Es el motor gráfico 2D de Android.
- OpenGL | ES (OpenGL for Embedded Systems): motor gráfico 3D basado en las APIs (Application Program Interface) de OpenGL ES 1.0, 1.1 (desde la versión 1.6 de Android) y 2.0 (desde la versión 2.2 de Android). Utiliza aceleración hardware (si el teléfono la proporciona) o un motor software altamente optimizado (o eso dice Google) cuando no la hay.
- Bibliotecas multimedia: basadas en OpenCORE, permiten visualizar, reproducir e incluso grabar numerosos formatos de imagen, vídeo y audio como JPG, GIF, PNG, MPEG4, AVC (H.264), MP3, AAC o AMR.
- WebKit: motor web utilizado por el navegador (tanto como aplicación independiente como embebido en otras aplicaciones). Es el mismo motor que utilizan Google Chrome y Safari (el navegador de Apple, tanto en Mac como en el iPhone).
- SSL (Secure Sockets Layer): proporciona seguridad al acceder a Internet por medio de criptografía.
- FreeType: permite mostrar fuentes tipográficas, tanto basadas en mapas de bits como vectoriales.
- SQLite: motor de bases de datos relacionales, disponible para todas las aplicaciones.
- Biblioteca C de sistema (libc): está basada en la implementación de Berkeley Software Distribution (BSD), pero optimizada para sistemas Linux embebidos. Proporciona funcionalidad básica para la ejecución de las aplicaciones.
KERNEL DE LINUX.
El núcleo del sistema operativo Android es un kernel Linux versión 2.6, similar al que puede incluir cualquier distribución de Linux, como Ubuntu, solo que adaptado a las características del hardware en el que se ejecutará Android (normalmente, un smartphone).
Proporciona una capa de abstracción para los elementos hardware a los que tienen que acceder las aplicaciones. Esto permite que se pueda acceder a esos componentes sin necesidad de conocer el modelo o características precisas de los que están instalados en cada teléfono. De esta forma, si una aplicación necesita, por ejemplo, la brújula, podrá utilizar la que incluya el teléfono, sea cual sea. Para cada elemento hardware del teléfono existe un controlador (o driver) dentro del kernel que permite utilizarlo desde el software.
Además de proporcionar controladores hardware, el kernel se encarga de gestionar los diferentes recursos del teléfono (energía, memoria, …) y del sistema operativo en sí: procesos, elementos de comunicación (networking), etc.
jueves, 2 de marzo de 2017
Java
Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.1 2
El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en 1995 como un componente fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva en gran medida de C y C++, pero tiene menos utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente.
La compañía Sun desarrolló la implementación de referencia original para los compiladores de Java, máquinas virtuales, y librerías de clases en 1991 y las publicó por primera vez en 1995. A partir de mayo de 2007, en cumplimiento con las especificaciones del Proceso de la Comunidad Java, Sun volvió a licenciar la mayoría de sus tecnologías de Java bajo la Licencia Pública General de GNU. Otros también han desarrollado implementaciones alternas a estas tecnologías de Sun, tales como el Compilador de Java de GNU y el GNU Classpath.
CARACTERISTICAS:
*Simple
*Orientada a Objetos
*Tipado estáticamente
*Distribuido
*Alto rendimiento: sobre todo con la aprición de hardware y mejor software
*Dinamico
VENTAJAS:
*El JDK es una herramienta libre de licencias
*Debido a qque existen diferentes productos de java, hay más proveedor de servicios.
*Sun saca al mercado cada 6 meses una nueva versión del JDK
*Es independiente de la plataforma de desarrollo.
DESVENTAJAS:
*Hay diferentes tipos de soporte técnico para la misma herramienta, por lo que el análisis de la mejor opción se dificulta
*Algunas herramientas tienen un costo adicional
*Para manejo a bajo nivel deben usarse metodos nativos
*Puede ser que no haya JDBC Para baser comerciales
NetBeans
Es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extenderlo. NetBeans IDE2 es un producto libre y gratuito sin restricciones de uso.
NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos (Actualmente Sun Microsystems es administrado por Oracle Corporation).
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.
El NetBeans IDE soporta el desarrollo de todos los tipos de aplicación Java (J2SE, web, EJB y aplicaciones móviles). Entre sus características se encuentra un sistema de proyectos basado en Ant, control de versiones y refactoring.
NetBeans IDE 6.5.2, la cual fue publicada el 19 de noviembre de 2008, extiende las características existentes del Java EE (incluyendo Soporte a Persistencia, EJB 3 y JAX-WS). Adicionalmente, el NetBeans Enterprise Pack soporta el desarrollo de Aplicaciones empresariales con Java EE 5, incluyendo herramientas de desarrollo visuales de SOA, herramientas de esquemas XML, orientación a web servicies (for BPEL), y modelado UML. El NetBeans C/C++ Pack soporta proyectos de C/C++, mientras el PHP Pack, soporta PHP 5.
Modularidad. Todas las funciones del IDE son provistas por módulos. Cada módulo provee una función bien definida, tales como el soporte de Java, edición, o soporte para el sistema de control de versiones. NetBeans contiene todos los módulos necesarios para el desarrollo de aplicaciones Java en una sola descarga, permitiéndole al usuario comenzar a trabajar inmediatamente.
Sun Studio, Sun Java Studio Enterprise, y Sun Java Studio Creator de Sun Microsystems han sido todos basados en el IDE NetBeans.
Desde julio de 2006, NetBeans IDE es licenciado bajo la Common Development and Distribution License (CDDL), una licencia basada en la Mozilla Public License (MPL). En octubre de 2007, Sun anunció que NetBeans desde entonces se ofrecerá bajo licenciamiento dual de Licencia CDDL y la GPL versión 2.\
| Versión | Fecha de lanzamiento |
|---|---|
| NetBeans 8.2 | 3 de octubre de 2016 |
| NetBeans 8.1 | 4 de noviembre de 2015 |
| NetBeans 8.0.1 | 5 de octubre de 2014 |
| NetBeans 7.4 | 15 de octubre de 2013 |
| NetBeans 7.3.1 | 12 de junio de 2013 |
| NetBeans 7.3 | 21 de febrero de 2013 |
| NetBeans 7.2 | noviembre de 2012 |
| NetBeans 7.1.2 | Mayo de 2012 |
| NetBeans 7.0.1 | 1 de agosto de 2011 |
| NetBeans 7.0 | 20 de abril de 2011 |
| NetBeans 6.9.1 | 4 de agosto de 2010 |
| NetBeans 6.9 | 15 de junio de 2010 |
| NetBeans 6.8 | 10 de diciembre de 2009 |
| NetBeans 6.7.1 | 27 de julio de 2009 |
| NetBeans 6.7 | 29 de junio de 2009 |
| NetBeans 6.5 | 25 de noviembre de 2008 |
| NetBeans 6.1 | 28 de abril de 2008 |
| NetBeans 6.0 | 3 de diciembre de 2007 |
| NetBeans 5.5.1 | 24 de mayo de 2007 |
| NetBeans 5.5 | 30 de octubre de 2006 |
| NetBeans 5.0 | enero de 2006 |
| NetBeans 4.1 | mayo de 2005 |
| NetBeans 4.0 | diciembre de 2004 |
| NetBeans 3.6 | abril de 2004 |
| NetBeans 3.5 | junio de 2003 |
| Netbeans 3.4.1 | enero de 2003 |
| Netbeans 3.4 | agosto de 2002 |
| Netbeans 3.3.2 | julio de 2002 |
| Netbeans 3.3.1 | febrero de 2002 |
| Netbeans 3.3 | diciembre de 2001 |
| Netbeans 3.2.1 | 2001 |
| Netbeans 3.2 | marzo de 2001 |
| Netbeans 3.1 | diciembre de 2000 |
VENTAJAS
*Amplio soporte de la comunidad
*Aceptable
*Múltiples lenguajes, multiplataforma
*Agregar y quitar módulos (Java, pyton, cordova)
*Java y JSP por excelencia
DESVENTAJAS
*Hecho en Java (lento)
*Entre más proyectos más lento
*Lee todo el código de los proyectos (más lento)
carbide c++
Es una herramienta para el desarrollo de software en lenguaje C++ destinado a dispositivos que funcionan bajo Symbian OS. Se usa tanto para desarrollar los teléfonos que incorporan dicho OS como para las aplicaciones que ejecutan estos.
Está formada por una familia de IDEs desarrollada por Nokia, basada en Eclipse, al que se han incorporado plug-ins para el desarrollo de Symbian OS. Reeemplazó a CodeWarrior como primer entorno de desarrollo para Symbian OS.
Desde la versión 2.0, Carbide.c++ es gratuito y se ofrece en tres versiones (Developer, Professional, y OEM).
CARACTERÍSTICAS:
*Herramienta para el desarrollo de software en lenguaje c++ destinado a dispositivos que funcionan bajo Symbain.Os
*Se usa tanto para desarrollar los teléfonos que incorporan dicho OS para las aplicaciones que ejecutan
*Es formada por una familia de IDES desarrollada por NOKIA, basada en eclipse, al que se han incorporado plug-ins para el desarrollo de Symbain OS
VENTAJAS
*Es muy potente en lo que se refiere a creación de sistemas complejos
*Actualmente, puede copilar y ejecutar código de C, ya viene con librería, para realizar esta labor.
*Existen muchos algoritmos cuyo pseudocódigo se encuentra ya en C++
*Permite elaborar aplicaciones sencillas como un "HOLA MUNDA" Hasta sistemas operativos y mucho más, todo esto dependiendo del lenguaje.
DESVENTAJAS
*Si existen errores en los pisos inferiores toda la parte superior se viene abajo
*No es recomendable para el desarrollo de paginas web
*Existen ya muchos entornos de programación
xcode
XCODE.
Es un entorno de desarrollo integrado (IDE, en sus siglas en inglés) para macOS que contiene un conjunto de herramientas creadas por Apple destinadas al desarrollo de software para macOS, iOS, watchOS y tvOS. Su primera versión tiene origen en el año 2003 y actualmente su versión número 8 se encuentra disponible de manera gratuita en el Mac App Store o mediante descarga directa desde la página para desarrolladores de Apple.
Xcode trabaja conjuntamente con Interface Builder, una herencia de NeXT, una herramienta gráfica para la creación de interfaces de usuario.
Xcode incluye la colección de compiladores del proyecto GNU (GCC), y puede compilar código C, C++, Swift, Objective-C, Objective-C++, Java y AppleScript mediante una amplia gama de modelos de programación, incluyendo, pero no limitado a Cocoa, Carbón y Java. Otras compañías han añadido soporte para GNU Pascal,1 Free Pascal,2 Ada y Perl.3
Entre las características más apreciadas de Xcode está la tecnología para distribuir el proceso de construcción a partir de código fuente entre varios ordenadores, utilizando Bonjour.
Historia.
Xcode se introdujo el 24 de octubre de 2003 junto con la versión 10.3 de Mac OS X, siendo desarrollado a partir del anterior entorno de desarrollo, Project Builder, al que sustituyó. Project Builder, a su vez, también era una herencia de la compañía NeXT, fusionada con Apple en 1996.
La aparición de Xcode 2.1 en junio de 2005 fue significativa porque proporcionó a la comunidad de desarrolladores las herramientas para crear binarios universales que permiten al software creado para Mac OS X ser ejecutado tanto en la arquitectura PowerPC como en la nueva, basada en Intel (x86). Esta versión integró además las herramientas y marcos de trabajo WebObjects de Apple para construir aplicaciones y servicios web de Java, que anteriormente se vendían como un producto separado por un precio de 699$.
Con el lanzamiento de Mac OS X v10.5 también lo fue el Xcode 3.0, que tenía como principales novedades la inclusión de Objetive-C 2.0, un nuevo Interface Builder, la opción de refactorizar proyectos y hacer "snapshosts" del proyecto entre otras.
Xcode 4, lanzado a principios de 2011, incluía como novedades una nueva interfaz y la compatibilidad con Mac OS X 10.7 Lion. Con esta versión, Xcode dejó de ser compatible con Mac OS X 10.5 Leopard
Modo de uso
Lo primero que veremos será una ventana de bienvenida, pasamos de ella. Lo primero que vamos a hacer es ver cómo se crea un proyecto nuevo; para ello nos vamos al menú principal: File > New Project... . Vemos que se abre la ventana New Project (imagen de la derecha). Esta ventana se divide en 3 parte: en la columna de la izquierda podemos elegir el tipo de proyecto que queramos realizar (aplicación para Mac o iPhone, proyecto Java, programa de consola, librerías...); dentro de cada tipo de proyecto hay subtipos, es lo que se puede seleccionar en la vista superior (por ejemplo, el proyecto “Application” para Mac OS X puede ser de tipo Cocoa Application, Carbon Application, Core Data Application, etc.); por último, en la vista inferior podremos ver una pequeña descripción del proyecto que tengamos marcado.
Después de elegir un proyecto nos preguntará donde y con que nombre guardar el proyecto, para ya al fin aparecer la ventana principal de nuestro proyecto (imagen de la izquierda). Esta ventana se divide en tres grandes partes: la columna de la izquierda, donde podemos ver una lista de los elementos de nuestro proyecto (ficheros fuente, librerías, archivos de interfaz de usuario, frameworks, etc.). La columna de la derecha se divide en dos vistas; la superior, donde vemos con más detalle lo que hayamos seleccionado en la lista de la izquierda; y la inferior, donde se encuentra el editor con el que picaremos código

Comentemos ahora los principales botones de la toolbar de Xcode que usaremos en las demos. El primero es en donde podremos elegir entre construir la aplicación en modo Debug (para depurar la aplicación) o en modo Release (lo que nos dará un ejecutable listo para ser publicado a los usuarios de la aplicación). En las demos que realicemos lo suyo sería hacerlas en modo Debug, dejando para el final de todo, opcionalmente, la compilación en modo Release. Los binarios creados con Release son guardados en la carpeta Build/Release de nuestro proyecto.
Otros botones que usaremos son el de Build (compilar la aplicación) y el de Build and Go (compilar y ejecutar la aplicación). A su vez, si mantenemos presionados estos botones nos aparecerán otras funciones a ejecutar. En el caso de Build también puede realizar Clean y Clean All, con lo que borraremos los binarios compilados así como sus dependencias; y en el caso de Build and Go puede realizar también Go, con lo que no compilará y ejecutará lo último que hayamos compilado.
A título personal tengo que decir que no me gusta trabajar con la ventana principal que nos ofrece Xcode, personalmente prefiero eliminar la columna de la derecha y escribir el código en una ventana a parte, ahorrando espacio en pantalla ¿cómo hacemos esto? Fácil, en la columna de la izquierda, en su cabecera, hacemos doble click en el botón que muestro en la imagen de la derecha, contrayéndose la ventana del proyecto a como muestra la imagen de abajo. Si volvemos a hacer doble click en el botón la ventana volverá a expandirse.
Pasemos a estudiar los principales componentes de un proyecto (mas bien los que nos interesan para llevar a cabo las demos). Como vemos en la imagen, se divide en cinco carpetas, pero las que nos interesan son tres: Classes, Resources y Frameworks. En la primera es donde guardaremos las clases que creemos; la segunda carpeta es donde se almacenan los ficheros de interfaz de usuario (a parte de otras cosas); y, por último, la tercera carpeta es donde añadiremos los frameworks que usaremos durante las demos. La verdad, lo de clasificar las cosas en estas carpetas es opcional, pero resulta mucho más cómodo a la hora de trabajar. Veamos entonces cómo añadir elementos al proyecto.
Para añadir una nueva clase (un fichero .h y otro .m, o sólo un .m) seleccionamos la carpeta Classes y hacemos click secundario sobre ella, nos aparecerá un menú contextual. En este menú seleccionamos Add > New File...
Se abrirá una ventana muy parecida a la de crear un nuevo proyecto y en ella debemos seleccionar, en la columna de la izquierda, Cocoa, y a continuación, en la columna de la derecha, Objective-C Class. Le damos a siguiente y nos pedirá un nombre para la clase. También podremos elegir si crear un archivo .h con ese mismo nombre y la localización de la clase (no debería tocarse). Las demás opciones no nos interesan por el momento. Hacemos click en Finish, con lo que nuestro fichero fuente será creado en la carpeta Classes del proyecto. Para abrir los ficheros fuente en el editor simplemente hacemos doble click sobre ellos y listo.
Veamos ahora cómo añadir frameworks a nuestros proyectos (esta operación se realizará en todas las demos). Al igual que antes, seleccionamos la carpeta frameworks y hacemos click secundario sobre ella. En esta ocasión, en el menú contextual, seleccionaremos Add > Existing Frameworks... Se abrirá un diálogo donde debemos buscar y seleccionar el framework que queramos añadir. ¿Y dónde se encuentran los frameworks? Los frameworks que usaremos son frameworks que vienen con el sistema (o los instala el kit de desarrollo) y se encuentran en /Sistema/Librería/Frameworks/. Después de seleccionar el framework que queramos añadir nos aparecerá otro diálogo, el cual no nos interesa, simplemente pulsamos en Add y listo. La carpeta Frameworks, luego de todos estos pasos, contendrá el framework que hayamos añadido.
Para terminar, veamos cómo activar el recogedor de basura, que por defecto viene desactivado (ya que si lo usamos nuestras aplicaciones solo servirán para Leopard). Debemos editar las propiedades del proyecto ¿cómo?, pues tenemos que ir al menú principal, eligiendo Project > Edit Project Settings, y se nos abrirá la ventana de propiedades del proyecto. En los botones de la parte superior de la ventana seleccionamos “Build”. La vista de la ventana cambiará apareciendo nuevas opciones imagen de la derecha). Nos situamos en el campo de búsqueda y escribimos “garbage”, con ello encontramos la configuración del recolector y procedemos a cambiársela a “Supported [-fobjc -gc]” (imagen inferior).
Con esto doy por acabada la introducción al uso básico de Xcode. Tiene muchísimas más características claro está, como por ejemplo: snapshots, control de versiones, diseño UML, etc., por lo que si queréis seguir profundizando en él os recomiendo los tres documentos que Apple ha publicado sobre el uso de Xcode; en la bibliografía de este trabajo podréis encontrar los enlaces.
Eclipse
Es una plataforma de desarrollo, diseñada para ser extendida de forma indefinida a través de plug-ins. Fue concebida desde sus orígenes para convertirse en una plataforma de integración de herramientas de desarrollo. No tiene en mente un lenguaje específico, sino que es un IDE genérico, aunque goza de mucha popularidad entre la comunidad de desarrolladores del lenguaje Java usando el plug-in JDT que viene incluido en la distribución estándar del IDE. Proporciona herramientas para la gestión de espacios de trabajo, escribir, desplegar, ejecutar y depurar aplicaciones.
Principales características.
Perspectivas, editores y vistas: en Eclipse el concepto de trabajo está basado en las perspectivas, que no es otra cosa que una preconfiguración de ventanas y editores, relacionadas entre sí, y que nos permiten trabajar en un determinado entorno de trabajo de forma óptima.
Gestión de proyectos: el desarrollo sobre Eclipse se basa en los proyectos, que son el conjunto de recursos relacionados entre sí, como puede ser el código fuente, documentación, ficheros configuración, árbol de directorios,... El IDE nos proporcionará asistentes y ayudas para la creación de proyectos. Por ejemplo, cuando creamos uno, se abre la perspectiva adecuada al tipo de proyecto que estemos creando, con la colección de vistas, editores y ventanas preconfigurada por defecto.
Depurador de código: se incluye un potente depurador, de uso fácil e intuitivo, y que visualmente nos ayuda a mejorar nuestro código. Para ello sólo debemos ejecutar el programa en modo depuración (con un simple botón). De nuevo, tenemos una perspectiva específica para la depuración de código, la perspectiva depuración, donde se muestra de forma ordenada toda la información necesaria para realizar dicha tarea.
Extensa colección de plug-ins: están disponibles en una gran cantidad, unos publicados por Eclipse, otros por terceros. Al haber sido un estándar de facto durante tanto tiempo (no el único estándar, pero sí uno de ellos), la colección disponible es muy grande. Los hay gratuitos, de pago, bajo distintas licencias, pero casi para cualquier cosa que nos imaginemos tenemos el plug-in adecuado.
El entorno de trabajo de Eclipse.
El entorno de trabajo de Eclipse consiste de varios paneles conocidos como vistas, como la vista del Navegador en la parte superior izquierda. Una colección de paneles se denomina una perspectiva. La perspectiva por defecto es la Perspectiva de Recursos, que es un conjunto básico y genérico de vistas para proyectos de gestión y para la visualización y edición de archivos en un proyecto.
La Vista del navegador le permite crear, seleccionar y eliminar proyectos. El panel hacia la derecha del Navegador es la área del editor. Según el tipo de documento seleccionado en el navegador, aquí se abre la ventana adecuada del editor. Si Eclipse no tiene un editor adecuado registrado para un tipo determinado de documentos (por ejemplo, un archivo
.doc en el sistema de Windows®), Eclipse intentará abrir el documento con un editor externo.
La Vista esquemática, que se encuentra debajo del Navegador, presenta un esquema del documento en el editor. La naturaleza precisa de este esquema depende del editor y el tipo de documento; para un archivo fuente Java, el esquema muestra cualquier clase declarada, atributos y métodos.
La Vista de tareas recopila información sobre el proyecto en el que está trabajando. Puede ser información generada por Eclipse, como errores de compilación o pueden ser tareas que agrega de forma manual.
La mayoría de las demás funciones del entorno de trabajo, como el menú o la barra de tareas, deberían ser similares a las de las aplicaciones familiares. Una función conveniente es la barra de herramientas de atajos a diferentes perspectivas que aparece en el lado izquierdo de la pantalla; varían de forma dinámica según el contexto y la historia. Eclipse también incluye un sistema robusto de ayuda que incluye una guía del usuario para el entorno de trabajo de Eclipse y los complementos incluidos como las Herramientas de Desarrollo de Java. Vale la pena buscar en archivos de ayuda al menos una vez para ver la variedad de opciones disponibles y para conocer mejor el flujo de Eclipse.
Para continuar con este tipo por recorrido de Eclipse, crearemos un proyecto en el Navegador. Haga clic en la Vista del navegador y luego seleccione New > Project. Cuando aparece el cuadro de New Project, seleccione Java en la izquierda. Eclipse estándar solo tiene un tipo de proyecto Java, que se denomina Java Project. Si había complementos instalados para proporcionar suministro para los JSP y los servlets, nos gustaría ver una opción adicional aquí para las aplicaciones web. Por ahora, seleccione el Java Project, ingrese "Hello" cuando el programa se lo pida para el nombre del proyecto y luego haga clic en Finish.
A continuación, le daremos un vistazo a la perspectiva de Java. Según cómo quiera administrar su pantalla, puede cambiar la perspectiva en la ventana actual al seleccionar Window > Open Perspective > Java o puede abrir una nueva ventana al seleccionar Window > New Window y selecciona la nueva perspectiva.
La perspectiva de Java, como usted podría esperar, tiene un conjunto de vistas que se adaptan mejor para el desarrollo de Java. Una de ellas incluye, al igual que la vista izquierda superior, una jerarquía que contiene varios paquetes Java, clases, JAR y archivos varios. Esta vista se denomina el Explorador de paquetes. También puede notar que el menú principal se expandió para incluir dos elementos nuevos en el menú: Fuente y refactorizador
Suscribirse a:
Entradas (Atom)









