Вы находитесь на странице: 1из 56

Re: Preguntas o Dudas para Instructor sobre Tema 1

de SAMUEL CAN UITZ - martes, 8 de diciembre de 2015, 02:50

Una duda
puedo estudiar los temas en cuanto tenga tiempo disponible.?

Mostrar mensaje anterior | Responder (rplica)

Re: Preguntas o Dudas para Instructor sobre Tema 1


de Ramn Gmez Romero - martes, 8 de diciembre de 2015, 21:27

Hola Samuel Buenas Tardes.


Respondiendo a tu pregunta.
A partir de que inicia tu curso tienes 30 das para poder terminar la revisin de todo el contenido.
Despus de ese tiempo se programa tu examen de certificacin (el cual tarda alrededor de 15 a 45
das para ser presentado). Tu tienes acceso a la plataforma y a todo el contenido hasta el da que
presentas tu examen.
Espero haber resuelto tu duda.
Saludos!!!
versin de java
de CARLOS MILLAN HINOJOSA - jueves, 9 de junio de 2016, 14:41

Que versin de java debemos descasrgar para el curso, ya que en el vnculo nos muestra varias.

Mostrar mensaje anterior | Responder (rplica)

Re: versin de java


de Ramn Gmez Romero - mircoles, 15 de junio de 2016, 02:57

Hola Carlos Buenas Tardes.


Respondiendo a tu pregunta:
Para la versin de jdk (Java Development Kit) te recomiendo descargar la ultima versin. Al da de
hoy es la versin 8 en especifico la que aparece en la pgina de Oracle como "Java SE
Development Kit 8u92"
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Espero haber resuelto tu duda.
Saludos!!!

1.1. HISTORIA
En el ao 2003, cuatro expertos en tecnologa, Andy Rubin, Rich Miner, Nick Sears y
Chris White, se unieron para crear la empresa Android Inc., esta empresa fue ubicada en
Palo Alto California. Los cuatro trabajaron para crear un sistema operativo para dispositivos
mviles que pudiera ser consiente tanto de la ubicacin de un usuario y permitiera ser
configurado en base a las preferencias de este.

En Agosto de 2005, Google compro Android Inc., aunque el precio de la compra nunca ha
sido revelado, se estima que ronda los 50 millones de dlares. Andy Rubin, uno de los
creadores de Android, trabaj de 2005 a 2013 como vicepresidente de ingeniera de Google. El
13 de Marzo de 2013, Rubin anuncia en su blog personal que se retira de Google para
dedicarse a otros proyectos externos, ocupando su lugar Sundar Pichai.

El 5 de Noviembre de 2007 Google dio a conocer la Open Handset Alliance (OHA), una
agrupacin de fabricantes de tecnologa que trabajan en conjunto para crear estndares
abiertos para dispositivos mviles. Las empresas de la coleccin incluan proveedores de
servicios inalmbricos de telecomunicaciones, fabricantes de telfonos mviles y fabricantes
de chipsets. Con este anuncio, Google dejaba en claro que sera diferente a otros sistemas
operativos mviles, ya que no se limitara simplemente a un dispositivo o fabricantes. En

octubre de 2008, fue lanzado al mercado el primer dispositivo inteligente con Android, el HTC
Dream.

Los inicios de Android fueron un poco lentos, ya que primero fue lanzado el sistema
operativo (Octubre de 2008) y posteriormente el primer dispositivo mvil, el HTC Dream,
tambin conocido como T-Mobile G1 (2008). Esto no ha sido problema para que el sistema
operativo tenga ganados muchos adeptos y ha demostrado una velocidad de madurez
importante debido a los diferentes fabricantes de hardware, que han adaptado interesantes
piezas para acompaar las diferentes funcionalidades del sistema operativo.

1.3. Qu necesito para programar en


Android?

Herramientas de software.

Sistema operativo. Una computadora que corra con Windows, Linux o Mac OS. En Windows
y en Linux no importa la arquitectura (32 bits o 64 bits).
Java. Se recomienda la ltima versin de Java disponible, puede descargarse desde la
siguiente pgina.
http://www.oracle.com/technetwork/es/java/javase/downloads/index.html
Kit de desarrollo. La ltima versin del SDK de Android, puede descargarse de la siguiente
pgina.
https://developer.android.com/intl/es/sdk/index.html
IDE. Android ha puesto a disposicin de los desarrolladores su propio IDE, Android Studio.
Este entorno de desarrollo ya incluye la ltima versin del SDK y puede ser descargado de la
siguiente pgina.

https://developer.android.com/intl/es/sdk/index.html

Conocimientos tcnicos.

Programacin orientada a objetos (POO). Si se ha programado en algn lenguaje que se


base en este paradigma (PHP, Python, Java, .NET, C o C++, etc.) no debera implicar mayor
problema empezar a desarrollar aplicaciones para Android.
Conocimientos Java. Si se ha programado en Java, la migracin a Android ser mucho ms
sencilla ya que las aplicaciones de Android se crean en este lenguaje de programacin.
Manejo de un IDE de desarrollo. Cualquiera que sea el lenguaje en el que se tenga un poco
de experiencia programando seguramente se ha hecho uso de algn IDE (entorno de
desarrollo integrado). Esto te ser til en el curso.

Herramientas Hardware.

Equipo Android. Uno de los puntos importantes que se recomienda, es tener es un telfono
que corra con Android. Esto es porque de esta manera se tendr una autntica forma de
probar cmo es que corren las aplicaciones en un ambiente real, adems de que existen
algunos ejemplos prcticos que por sus caractersticas es altamente recomendable ejecutarlos
en un dispositivo fsico.

1.2. Qu es Android?

Android es una pila de software pensada inicialmente para telfonos mviles


(smartphones) que incluye un sistema operativo, middleware y una capa aplicaciones para que
el telfono pueda realizar funciones ms all de los dispositivos que se usaban antao.

Dejando un poco de lado los tecnicismos, Android es otra de las opciones de interfaces y
caractersticas que podemos encontrar en telfonos mviles; as como podemos identificar
aspectos particulares de un Nokia cuyo sistema operativo es Windows Phone, o un iPhone con
iOS o incluso los Blackberry, tambin existen cosas muy especficas en los telfonos que
funcionan con Android.

En trminos tcnicos, Android es un sistema operativo basado en el kernel de Linux, por


esa razn tiene inmersas las caractersticas de ser libre, gratuito y multiplataforma. Cualquier
desarrollador puede crear aplicaciones para Android sin la necesidad de pagar membresas
anuales para obtener el kit de desarrollo (SDK).

Android utiliza una variacin del lenguaje de programacin Java (Java ME). Si has
desarrollado en Java, seguramente conocers lo que es trabajar con una mquina virtual que
sirve para interpretar todo ese cdigo que genera nuestro programa (bytecode) y pueda
ejecutarse. Pues bien, Android, tiene una adaptacin de esta mquina virtual y se llama ART.
Distinta de la virtual machine por default de Java, ART es una excelente versin que optimiza

muchas cosas en la plataforma y mucho de la rapidez de Android y de algunas aplicaciones se


debe precisamente a esto.

2.1. Arquitectura general


El sistema Android es una pila de software para dispositivos mviles el cual se encuentra
compuesto por el sistema operativo, un middleware (software intermedio entre las aplicaciones
y el sistema operativo) y un conjunto de aplicaciones bsicas. Android provee una plataforma
de desarrollo abierto y ofrece a los desarrolladores la capacidad de crear aplicaciones ricas e
innovadoras, adems permite tomar las ventajas que ofrece el hardware del dispositivo para
mejorar las aplicaciones. Como desarrolladores se tiene total acceso a las APIs del framework,
ya que la arquitectura en Android est diseada para simplificar el reuso de los componentes,
as como APIs para el control de los dispositivos para conectividad, sensores, etc.

A continuacin se mencionan las principales caractersticas de cada capa de la arquitectura.

Kernel de Linux. Primer capa de la arquitectura, el ncleo del sistema operativo Android est
basado en la versin 2.6 del kernel de Linux, similar al que puede incluir cualquier distribucin
de Linux, como Ubuntu, solo que adaptado a las caractersticas del hardware en el que se
ejecutar Android, es decir, adaptado a dispositivos mviles.

El ncleo acta como una capa de abstraccin entre el hardware y el resto de las capas de
la arquitectura. El desarrollador no accede directamente a esta capa, sino que debe utilizar las
bibliotecas disponibles en capas superiores. De esta forma tambin se evita tener que conocer
las caractersticas precisas de cada dispositivo. Por ejemplo, si se requiere hacer uso de la
cmara, el sistema operativo se encarga de utilizar la que incluya el equipo, sea cual sea. Para
cada elemento de hardware del dispositivo existe un controlador (driver) dentro del kernel que
permite utilizarlo desde el software.

Otra de las tareas del kernel es la de gestionar los diferentes recursos del dispositivo (energa,
memoria, etc.), y del sistema operativo (procesos, red, entre otros).

Libraries (Bibliotecas). La siguiente capa que se sita justo sobre el kernel la componen las
bibliotecas nativas de Android. Estn escritas en C o C++ y compiladas para la arquitectura
hardware especfica de cada dispositivo. Normalmente estn hechas por el fabricante, quien
tambin se encarga de instalarlas en el dispositivo antes de ponerlo a la venta. El objetivo de
las bibliotecas es proporcionar funcionalidad a las aplicaciones para tareas que se repiten con
frecuencia, evitando tener que codificarlas cada vez y garantizando que las tareas se llevan a
cabo de forma ms eficientes.

Entre

las

bibliotecas

grfico), Bibliotecas

incluidas

habitualmente

multimedia (formatos

video),Webkit (navegador), SSL (cifrado

de

de

encontramos OpenGL (motor


audio,

imagen

comunicaciones), FreeType (fuentes

y
de

texto), SQLite (base de datos), entre otras.

Android Runtime (Entorno de ejecucin). El entorno de ejecucin de Android no se


considera una capa como tal, dado que tambin est formado por bibliotecas. Aqu se
encuentran las bibliotecas con las funcionalidades habituales de Java, as como otras
especficas de Android.

El componente principal del entorno de ejecucin de Android es la mquina virtual. Las


aplicaciones se codifican en Java y son compiladas en un formato especfico para que esta
mquina virtual las ejecute. La ventaja de esto es que las aplicaciones se compilan una nica
vez y de esta forma estarn listas para distribuirse con la total garanta de que podrn
ejecutarse en cualquier dispositivo Android que disponga de la versin mnima del sistema
operativo que requiera la aplicacin.

Cabe aclarar que la mquina virtual de Android es una variacin de la mquina virtual de
Java, por lo que no es compatible con el bytecode Java. Java se usa nicamente como
lenguaje de programacin, y los ejecutables que se generan con el SDK de Android tienen la
extensin .dex que es especfico para la mquina virtual de Android, y por ello no podemos
correr aplicaciones Java en Android ni viceversa.

Application Framework (Marco de aplicaciones). La siguiente capa est formada por todas
las clases y servicios que utilizan directamente las aplicaciones para realizar sus funciones. La
mayora de los componentes de esta capa son bibliotecas Java que acceden a los recursos de
las capas anteriores a travs de la mquina virtual. Algunos de los componentes ms
importantes se listan en la siguiente tabla.

Nombre de
servicios

la

clase

o Descripcin

Activity Manager

Se encarga de administrar la pila de actividades de


la aplicacin as como su ciclo de vida.

Windows Manager

Se encarga de organizar lo que se mostrar en


pantalla. Bsicamente crea las superficies en la
pantalla que posteriormente pasarn a ser
ocupadas por las actividades.

Content Provider

Esta librera crea una capa que encapsula los datos


que se compartirn entre aplicaciones para tener
control sobre cmo se accede a la informacin.

Views

Elementos que nos ayudarn a construir las


interfaces de usuario: botones, cuadros de texto,
listas y hasta elementos ms avanzados como un
navegador web o un visor de Google Maps.

Notification Manager

Engloba los servicios para notificar al usuario


cuando algo requiera su atencin mostrando alertas
en la barra de estado. Un dato importante es que
esta biblioteca tambin permite el acceso a
elementos como el sonido, activar el vibrador o
utilizar los LEDs del dispositivo en caso de tenerlos.

Package Manager

Esta biblioteca permite obtener informacin sobre


los paquetes instalados en el dispositivo Android,
adems de gestionar la instalacin de nuevos

paquetes. Un paquete es la forma en que se


distribuyen las aplicaciones Android, estos
contienen el archivo .apk, que a su vez incluyen los
archivos .dex con todos los recursos y archivos
adicionales que necesite la aplicacin, para facilitar
su descarga e instalacin.
Resource Manager

Permite gestionar todos los elementos que forman


parte de la aplicacin y que estn fuera del cdigo,
es decir, cadenas de texto traducidas a diferentes
idiomas, imgenes, sonidos o layouts.

Location Manager

Permite determinar la posicin geogrfica del


dispositivo Android mediante GPS o redes
disponibles y trabajar con mapas.

Sensor Manager

Permite manipular los sensores hardware del


telfono como el acelermetro, giroscopio, sensor
de luminosidad, sensor de campo magntico,
brjula, sensor de presin, sensor de proximidad,
sensor de temperatura, etc.

Cmara

Con esta biblioteca podemos hacer uso de la(s)


cmara(s) del dispositivo para poder tomar fotos o
grabar video.

Multimedia

Permite reproducir audio, video e imgenes en el


dispositivo.

Telephony Manager

Con esta biblioteca podremos 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.

Applications (Aplicaciones). En la ltima capa se incluyen todas las aplicaciones del


dispositivo, tanto las que tienen interfaz de usuario como las que no, las nativas (programadas
en C o C++) y las administradas (programadas en Java), las que vienen preinstaladas en el
dispositivo y aquellas que el usuario ha instalado.

En esta capa encontramos tambin la aplicacin principal del sistema: Inicio (Home) o lanzador
(launcher), porque es la que permite ejecutar otras aplicaciones mediante una lista y

mostrando diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o


incluso widgets, que son tambin aplicaciones de esta capa.

A
Android
https://www.android.com/

API

Stands for "Application Program Interface," though it is sometimes referred to as an "Application Programming Interface

commands, functions, and protocols which programmers can use when building software for a specific operating system
programmers to use predefined functions to interact with the operating system, instead of writing them from scratch.

All computer operating systems, such as Windows, Unix, and the Mac OS, provide an application program interface for p

are also used by video game consoles and other hardware devices that can run software programs. While the API make

job easier, it also benefits the end user, since it ensures all programs using the same API will have a similar user interfac

Aplicacin

(Application). Programa informtico que permite a un usuario utilizar una computadora con un fin especfico. Las ap
del software de una computadora, y suelen ejecutarse sobre el sistema operativo.

Una aplicacin de software suele tener un nico objetivo: navegar en la web, revisar correo, explorar el disco duro, ed
juego es un tipo de aplicacin), etc. Una aplicacin que posee mltiples programas se considera un paquete.
Son ejemplos de aplicaciones Internet Explorer, Outlook, Word, Excel, WinAmp, etc.
Caractersticas de las aplicaciones

En general, una aplicacin es un programa compilado (aunque a veces interpretado), escrito en cualquier lenguaje de p
Las aplicaciones pueden tener distintas licencias de distribucin como ser freeware, shareware, trialware, etc.

Las aplicaciones tienen algn tipo de interfaz, que puede ser una interfaz de texto o una interfaz grfica (o ambas
destacar que la distincin entre aplicaciones y sistemas operativos muchas veces no es clara. De hecho, en algunos
no existe una clara distincin para el usuario entre el sistema y sus aplicaciones.

App
Que es una App?

Creo que a da de hoy deben quedar pocas personas que no haya oido hablar de ellas o que no sepa que es unaAp

que el espectacular boom que han sufrido las aplicaciones para mviles han provocado una gran confusin en torno a

ocasiones lleva a una mala utilizacin o abuso de la palabra incluso por personas conocedoras de las nuevas te
queremos dejaros enlaces que vemos interesantes como los relativos a los costes de crear apps.

Una App es una aplicacin de software que se instala en dispositivos mviles o tablets para ayudar al usuario en una la
de carcter profesional o de ocio y entretenimiento, a diferencia de una webapp que no es instalable.
El objetivo de una app es facilitarnos la consecucin de una tarea determinada o asistirnos en operaciones y gestiones

Existen infinidad de tipos de aplicaciones: Apps de noticias (elmundo.es), juegos (CSR Racing), herramienta

como Whatsapp, redes sociales como Google+, apps para salir de fiesta (Liveclubs), promociones comerciales (McDon
para vender tus cosas usadas desde el mvil (YuMe)etc, que nos pueden ayudar en el trabajo o intentar hacernos el
De dnde viene el trmino de App?

El trmino App es la abreviatura de Application y como tal, siempre se ha utilizado para denominar a stas en sus difere

Siendo una palabra de uso comn en el mundo del software, el trmino App comenz a utilizarse especialmente
aplicaciones para mviles en 2008, tras la consecucin de tres hitos importantes en la historia de las aplicaciones, el

Store de Apple , la publicacin del primer SDK para Android y la posterior pero casi inmediata inaguracin del Android M

Fruto de la rpida popularizacin del trmino y de la actual moda de las aplicaciones para mviles, es habitual e

familiarizadas con el mundo informtico abusar del trmino y utilizarlo indiscriminadamente para cualquier apli
generando una confusin innecesaria.

Esta semana podamos leer en un popular blog de nuevas tecnologas como un redactor escriba sobre los ingresos e

mencionaba a DropBox como una app que se haba escapado del monopolio del AppStore con xito. Con ello trataba
apps podan triunfar sin pasar por lor markets.

Para aclarar trminos, Dropbox sera una aplicacin de software y en todo caso un servicio, que es como ellos mismo
este caso se aplica a la aplicacin descargable, que aunque el autor desconociese, si podemos encontrar en el

manera Dropbox es una aplicacin informtica, y el descargable de esta compaa en los market es la App.
Cul es el coste que tiene una app?
Depende, es totalmente en funcin de sus carctersticas.
Orgenes y boom de App.

Investigando sobre los orgenes de App, y utilizando la asombrosa herramienta de estadsticas de bsqueda de
reveladores datos.

Basndonos en una estadstica sobre las bsquedas relacionadas con el trmino App y asignndole un ndice 1
actuales, observamos que el trmino apenas tena un 10% del ratio de bsqueda actual hasta avanzado 2008.

Este dato no hace ms que reafirmar la relacin del trmino App con las aplicaciones para dispositivos mviles y
programas informticos que instalamos en nuestros ordenadores, conocidos como programas o software de gestin.
Entrando en mayor detalle podemos observar tres claras tendencias:
1.
2.

2003 a 2008: No existen cambios en las bsquedas y en consecuencia en el inters de la poblacin mundial en
Q3/2008 a Q3/2010: Las consultas y el inters mundial est en alza y el incremento sigue una linea de tenden
esta tendencia se identifica con tres hechos muy prximos en el tiempo:

Lanzamiento del App Store en Julio de 2008.

Publicacin del primer SDK para desarrolladores de Android en Agosto de 2008

Apertura del Android Market en Octubre de 2008.

Justificando sobradamente estos hechos el cambio de tendencia.


3. Q3/2010 hasta la actualidad: A mediados de 2009 se inicia otro alza del inters mundial por el trmino App, este
tendencia se ve sin duda originado por:

Publicacin del primer API para desarrolladores de iOS 4 y en consecuencia apertura del mercado global de
propuestas de empresas y desarrolladores de aplicaciones y juegos para iPhone. (Junio de 2010)

Con estos datos a Julio de 2012, el impacto de los otros market no ha sido suficiente como para producir un camb

previsible que Windows Phone aumente rpidamente el nmero de descargas y su cuota de mercado, pero este crec

de las dos plataforma predominantes por lo que no es de esperar otro cambio de tendencia ms al alza. Para el
un mercado global de 36.000 millones de descargas en todas las plataformas.

Archivo (Informtica)
archivo.
(Del lat. archvum, y este del gr. , residencia de los magistrados).

1. m. Conjunto ordenado de documentos que una persona, una sociedad, una institucin, etc., producen en el ejercicio
actividades.
2. m. Lugar donde se custodian uno o varios archivos.
3. m. Accin y efecto de archivar ( guardar documentos o informacin en un archivo). Entreg la documentacin
archivo.
4. m. Accin y efecto de archivar ( dar por terminado un asunto). El juez orden el archivo del caso.

5. m. Inform. Espacio que se reserva en el dispositivo de memoria de un computador para almacenar porciones de inf
la misma estructura y que pueden manejarse mediante una instruccin nica.
6. m. Inform. Conjunto de la informacin almacenada de esa manera.
7. m. Col. oficina.
8. m. p. us. Persona en quien se confa un secreto o recnditas intimidades y sabe guardarlas.
9. m. p. us. Persona que posee en grado sumo una perfeccin o conjunto de perfecciones. Archivo de la cortesa, de la

Arquitectura de hardware

(hardware architecture). La arquitectura de hardware es una representacin de un sistema de hardware electrome


desarrollado o a desarrollar.

La arquitectura de hardware primero se concentra en las interfaces elctricas internas entre los componentes o subsis
luego la interfaz entre el sistema y su entorno.

Biblioteca o Librera

Se emplea el trmino librera para referirse a una biblioteca, por la similitud con el original ingls library. Ambos trminos

librera, son correctos segn las definiciones de la RAE, aunque en trminos formales, la acepcin correcta es bibliotec
traduccin correcta de library.

Independientemente de lo anterior comentado, una biblioteca es un Kit de herramientas software pequeo y autnomo

funcionalidad muy especfica al usuario. Normalmente se usa junto con otras libreras y herramientas para hacer una ap

ya que por lo general las bibliotecas no son ejecutables, pero s pueden ser usadas por ejecutables que las necesiten p
funcionar.

Imaginemos que estamos haciendo programas de ordenador, nos damos cuenta que algunas partes del cdigo se utiliz

ellos. Por ejemplo, podemos tener varios programas que utilizan nmeros complejos y las funciones de suma, resta, etc

Tambin es posible, por ejemplo, que nos guste hacer juegos, y nos damos cuenta que estamos repitiendo una y otra v

mover una imagen por la pantalla. Sera estupendo poder meter esas funciones en un directorio separado de los progra
tenerlas ya compiladas, de forma que podamos usarlas siempre que queramos.

Las ventajas enormes de esto son:

No tener que volver a escribir el cdigo (o hacer copy-paste).

Nos ahorraremos el tiempo de compilar cada vez ese cdigo que ya est compilado. Adems, ya sabemos que m

programa, probamos y corregimos, hay que compilar entre muchas y "ms muchas" veces.

El cdigo ya compilado estar probado y ser fiable. No las primeras veces, pero s cuando ya lo hayamos usado

distintos y le hayamos ido corrigiendo los errores.

La forma de hacer esto es hacer libreras. Ya que hemos quedado que una librera son una o ms funciones que tenem

preparadas para ser utilizadas en cualquier programa que hagamos.


Existen dos tipos de libreras:

Libreras estticas Es una librera que "se copia" en nuestro programa cuando lo compilamos. Una vez que tene

de nuestro programa, la librera no sirve para nada (es un decir, sirve para otros futuros proyectos). Podramos borrarla

seguira funcionando, ya que tiene copia de todo lo que necesita. Slo se copia aquella parte de la librera que se neces
la librera tiene dos funciones y nuestro programa slo llama a una, slo se copia esa funcin.

Libreras dinmica NO se copia en nuestro programa al compilarlo. Cuando tengamos nuestro ejecutable y lo e

cada vez que el cdigo necesite algo de la librera, ir a buscarlo a sta. Si borramos la librera, nuestro programa dar

la encuentra. Windows est construido sobre una gran cantidad deDLL's, y es que Windows guarda sus libreras de enl
archivos que tienen extensin DLL.

Toda librera ofrecer un Interfaz de programacin de aplicaciones (API) que es el conjunto de mtodos que ofrece cier
ser utilizado por otro software como una capa de abstraccin.

Palabra(s) clave:

Bytecode

Bytecode is object-oriented programming (OOP) code compiled to run on a virtual machine (VM) instead of a central pr
The VM transforms program code into readable machine language for the CPU because platforms utilize differen
techniques. A VM converts bytecode for platform interoperability, but bytecode is not platform-specific. Bytecode is

programming language format and has the .class extension executed by Java Virtual Machine (JVM). This term is als
code (p-code).
Certain programming languages like C and C++ require different platform compilers, such as those in Windows, Mac or

on hardware and CPU communication methods and require recompiling. Bytecode does not require recompiling or cha

VM enables programming for cross-platform code portability. The VM provider handles platform-specific language task
are two well-known programming languages utilizing bytecode for easy interoperability.

Clase (Class - Programacin orientada a objetos)


What Is a Class?

In the real world, you'll often find many individual objects all of the same kind. There may be thousands of other bicycles

the same make and model. Each bicycle was built from the same set of blueprints and therefore contains the same com
oriented terms, we say that your bicycle is an instance of the class of objects known as bicycles. A class is the blueprint
individual objects are created.
The following Bicycle class is one possible implementation of a bicycle:
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}

void applyBrakes(int decrement) {


speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}

The syntax of the Java programming language will look new to you, but the design of this class is based on the previous

bicycle objects. The fields cadence, speed, and gear represent the object's state, and the methods (changeCadence, ch
etc.) define its interaction with the outside world.

You may have noticed that the Bicycle class does not contain a main method. That's because it's not a complete applica

blueprint for bicycles that might be used in an application. The responsibility of creating and using new Bicycle objects b
other class in your application.
Here's a BicycleDemo class that creates two separate Bicycle objects and invokes their methods:
class BicycleDemo {
public static void main(String[] args) {
// Create two different
// Bicycle objects
Bicycle bike1 = new Bicycle();

Bicycle bike2 = new Bicycle();


// Invoke methods on
// those objects
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
The output of this test prints the ending pedal cadence, speed, and gear for the two bicycles:
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3

Cdigo fuente

(Source code, code base). Texto escrito en un lenguaje de programacin especfico y que puede ser ledo por un

traducirse a lenguaje mquina para que pueda ser ejecutado por la computadora o a bytecode para que pueda s
intrprete. Este proceso se denomina compilacin. Acceder al cdigo fuente de un programa significa acced
desarrollados por sus creadores. Es la nica manera de modificar eficaz y eficientemente un programa.

Liberar un cdigo fuente significa compartir ese texto con cualquier persona que lo desee, esto implica que cualquie

copiarlo o modificarlo. Las aplicaciones que liberan sus cdigos suelen ser gratuitas bajo licencia GNU. La liberacin

programa implica ciertos riesgos en cuando a la seguridad del mismo, pues su funcionamiento exacto queda expuesto

suele liberarse para las aplicaciones comerciales y no puede obtenerse el cdigo fuente original a travs de los program

D
Dalvik
The Android platform's virtual machine.

The Dalvik VM is an interpreter-only virtual machine that executes files in the Dalvik Executable (.dex) format, a format
efficient storage and memory-mappable execution. The virtual machine is register-based, and it can run classes

language compiler that have been transformed into its native format using the included "dx" tool. The VM runs on to

operating systems, which it relies on for underlying functionality (such as threading and low level memory manageme

class library is intended to provide a familiar development base for those used to programming with Java Standard Ed
specifically to the needs of a small mobile device.

Dispositivo
Aparato, artificio, mecanismo, artefacto, rgano, elemento de un sistema.

En las computadoras los distintos dispositivos conectados a ellas deben ser reconocidos por el sistema operativo y par
controladores (drivers).
Para ver una lista de los dispositivos ms comunes que se conectan a una computadora vea: computadora personal.

E
Ejecutar (Informtica)
(Del lat. exsectus, part. pas. de exsqui, consumar, cumplir).
1. tr. Poner por obra algo.
2. tr. ajusticiar ( dar muerte al reo).
3. tr. Desempear con arte y facilidad algo.
4. tr. Tocar una pieza musical.
5. tr. Der. Reclamar una deuda por va o procedimiento ejecutivo.
6. tr. Inform. Realizar las operaciones especificadas por un programa de un ordenador.
7. tr. p. us. Ir a los alcances de alguien a quien se persigue.

Estndar
(Del ingl. standard).
1. adj. Que sirve como tipo, modelo, norma, patrn o referencia.
2. m. Tipo, modelo, patrn, nivel. Estndar de vida.

Folder (carpeta)

A digital folder has the same purpose as a physical folder to store documents. Computer folders can also store other ty

applications, archives, scripts, and libraries. Folders can even store other folders, which may contain additional files and

Folders are designed for organizing files. For example, you might store your digital photos in a "Pictures" folder, your au

folder, and your word processing documents in a "Documents" folder. In Windows, software programs are installe
"Program Files" folder, while in OS X they are stored in the "Applications" folder.

Folders are also called directories because of the way they organize data within the file system of a storage de

subfolders, or subdirectories of the root directory. For example, in Windows, C:\ is the root directory of the startup disk. T
application is installed in the C:\Program Files\Internet Explorer directory, which is also the directory path of the Internet

While folders may contain several gigabytes of data, folders themselves do not take up any disk space. This is becaus

pointers that define the location of files within the file system. You can view how much data is stored in a folder by

selecting Properties in Windows or Get Info in OS X. To create a new folder, right-click on the desktop or an open windo
Folder (Windows) or New Folder (OS X).

Framework (Software)

A framework, or software framework, is a platform for developing software applications. It provides a foundation

developers can build programs for a specific platform. For example, a framework may include predefined classes and f

used to process input, manage hardware devices, and interact with system software. This streamlines the develop
programmers don't need to reinvent the wheel each time they develop a new application.

A framework is similar to an application programming interface (API), though technically a framework includes an

suggests, a framework serves as a foundation for programming, while an API provides access to the elements supporte

A framework may also include code libraries, a compiler, and other programs used in the software development process

Several different types of software frameworks exist. Popular examples include ActiveX and .NET for Windows developm
OS X, Cocoa Touch for iOS, and the Android Application Framework for Android. Software development kits (SDKs) are

these frameworks and include programming tools designed specifically for the corresponding framework. For exam

development software includes a Mac OS X SDK designed for writing and compiling applications for the Cocoa framewo

In many cases, a software framework is supported natively by an operating system. For example, a program wri

Application Framework will run on an Android device without requiring other additional files to be installed. Howeve

require a specific framework in order to run. For example, a Windows program may require Microsoft .NET Framewo

installed on all Windows machines (especially PCs running older versions of Windows). In this case, the Microsoft
installer package must be installed in order for the program to run.

NOTE: While frameworks generally refer to broad software development platforms, the term can also be used to
framework within a larger programming environment. For example, multiple Java frameworks, such as Spring, ZK, and

Framework (JCF) can be used to create Java programs. Additionally, Apple has created several specific frameworks th

by OS X programs. These frameworks are saved with a .FRAMEWORK file extension and are installed in the /System
directory.

Examples

of

OS

frameworks

include

AddressBook.framework,

CoreAudio.framework,

CoreT

QuickTime.framework.

GUI (Graphical User Interface)

Stands for "Graphical User Interface" and is pronounced "gooey." It is a user interface that includes graphical element

icons and buttons. The term was created in the 1970s to distinguish graphical interfaces from text-based ones, suc
interfaces. However, today nearly all digital interfaces are GUIs.

The first commercially available GUI, called "PARC," was developed by Xerox. It was used by the Xerox 8010 Inform

was released in 1981. After Steve Jobs saw the interface during a tour at Xerox, he had his team at Apple develop an o

a similar design. Apple's GUI-based OS was included with the Macintosh, which was released in 1984. Microsoft rele
based OS, Windows 1.0, in 1985.

For several decades, GUIs were controlled exclusively by a mouse and a keyboard. While these types of input devic

desktop computers, they do not work as well for mobile devices, such as smartphones and tablets. Therefore, mobile op
designed to use a touchscreen interface. Many mobile devices can now be controlled by spoken commands as well.

Because there are now many types of digital devices available, GUIs must be designed for the appropriate type of in

desktop operating system, such as OS X, includes a menu bar and windows with small icons that can be easily navigat

mobile OS, like iOS, includes larger icons and supports touch commands like swiping and pinching to zoom in or zo

interfaces are often designed to be controlled with knobs and buttons, and TV interfaces are built to work with a remote
of the type of input, each of these interfaces are considered GUIs since they include graphical elements.

NOTE: Specialized GUIs that operate using speech recognition and motion detection are called natural user interfaces,

Hardware

Computer hardware refers to the physical parts of a computer and related devices. Internal hardware devices include
drives, and RAM. External hardware devices include monitors, keyboards, mice, printers, and scanners.

The internal hardware parts of a computer are often referred to as components, while external hardware device

peripherals. Together, they all fall under the category of computer hardware. Software, on the other hand, consists o

applications that run on computers. Because software runs on computer hardware, software programs often have syste
list the minimum hardware required for the software to run.

Herencia (inheritance - Programacin orientada a objetos)


What Is Inheritance?

Different kinds of objects often have a certain amount in common with each other. Mountain bikes, road bikes, an

example, all share the characteristics of bicycles (current speed, current pedal cadence, current gear). Yet each als

features that make them different: tandem bicycles have two seats and two sets of handlebars; road bikes have dro
mountain bikes have an additional chain ring, giving them a lower gear ratio.

Object-oriented programming allows classes to inherit commonly used state and behavior from other classes. In this e

becomes the superclass of MountainBike, RoadBike, and TandemBike. In the Java programming language, each clas
one direct superclass, and each superclass has the potential for an unlimited number of subclasses:
A diagram of classes in a hierarchy.
A hierarchy of bicycle classes.

The syntax for creating a subclass is simple. At the beginning of your class declaration, use the extends keyword, follo
the class to inherit from:
class MountainBike extends Bicycle {
// new fields and methods defining
// a mountain bike would go here
}

This gives MountainBike all the same fields and methods as Bicycle, yet allows its code to focus exclusively on the f

unique. This makes code for your subclasses easy to read. However, you must take care to properly document the sta
each superclass defines, since that code will not appear in the source file of each subclass.

As you've already learned, objects define their interaction with the outside world through the methods that they expos

object's interface with the outside world; the buttons on the front of your television set, for example, are the interface b
electrical wiring on the other side of its plastic casing. You press the "power" button to turn the television on and off.

In its most common form, an interface is a group of related methods with empty bodies. A bicycle's behavior, if spec
might appear as follows:
interface Bicycle {
// wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}

To implement this interface, the name of your class would change (to a particular brand of bicycle, for example, such as

you'd use the implements keyword in the class declaration:


class ACMEBicycle implements Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and applyBrakes
// all be implemented. Compilation will fail if those
// methods are missing from this class.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {

speed = speed - decrement;


}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}

Implementing an interface allows a class to become more formal about the behavior it promises to provide. Interfa

between the class and the outside world, and this contract is enforced at build time by the compiler. If your class clai

interface, all methods defined by that interface must appear in its source code before the class will successfully compile.

IDE (Integrated Development Environment)

IDE stands for both "Integrated Device Electronics" and "Integrated Development Environment." The first is a hardw
second is related to software programming.
1. Integrated Device Electronics

IDE was the most widely-used type of hard drive from the mid 1990s to the late 2000s. The "integrated" aspect of the n

the controller is integrated into the drive itself. IDE and ATA are often used synonymously since they both refer to the
drive. However, ATA describes the interface while IDE describes the actual hard drive.

The first IDE standard (ATA-1) was released in 1994 and supported data transfer rates of 8.3 Mbps in DMA mode. En

was standardized in 1996 and supported data transfer rates up to 16.7 Mbps twice the rate of the original standard. T

standards were labeled using ATA versions (up to ATA-7), maxing out at 133 Mbps. The IDE interface was eventually s
an even faster interface.
2. Integrated Development Environment

A software IDE is an application that developers use to create computer programs. In this case, "integrated" refers

development tools are combined into a single program. For example, a typical IDE includes a source code editor, deb

Most IDEs also provide a project interface that allows programmers to keep track of all files related to a project. M
control as well.

Some IDEs provide a runtime environment (RTE) for testing software programs. When a program is run within the RTE

track each event that takes place within the application being tested. This can be useful for finding and fixing bugs and lo

memory leaks. Because IDEs provide a centralized user interface for writing code and testing programs, a programme

change, recompile the program, and run the program again. Programming is still hard work, but IDE software h
development process.

Interfaz (Interface - Programacion orientada a objetos)


What Is an Interface?

As you've already learned, objects define their interaction with the outside world through the methods that they expos

object's interface with the outside world; the buttons on the front of your television set, for example, are the interface b
electrical wiring on the other side of its plastic casing. You press the "power" button to turn the television on and off.

In its most common form, an interface is a group of related methods with empty bodies. A bicycle's behavior, if spec
might appear as follows:
interface Bicycle {
// wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}

To implement this interface, the name of your class would change (to a particular brand of bicycle, for example, such as
you'd use the implements keyword in the class declaration:
class ACMEBicycle implements Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
// The compiler will now require that methods

// changeCadence, changeGear, speedUp, and applyBrakes


// all be implemented. Compilation will fail if those
// methods are missing from this class.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);

}
}

Implementing an interface allows a class to become more formal about the behavior it promises to provide. Interfa

between the class and the outside world, and this contract is enforced at build time by the compiler. If your class clai

interface, all methods defined by that interface must appear in its source code before the class will successfully compile.

Java
Conozca ms sobre la tecnologa Java

Java es la base para prcticamente todos los tipos de aplicaciones de red, adems del estndar global para de

aplicaciones mviles y embebidas, juegos, contenido basado en web y software de empresa. Con ms de 9 millones d
todo el mundo, Java le permite desarrollar, implementar y utilizar de forma eficaz interesantes aplicaciones y servicios.

Desde porttiles hasta centros de datos, desde consolas para juegos hasta sper computadoras, desde telfonos m
Java est en todas partes.

El 97% de los escritorios empresariales ejecutan Java

El 89% de los escritorios (o computadoras) en Estados Unidos ejecutan Java

9 millones de desarrolladores de Java en todo el mundo

La primera opcin para los desarrolladores

La primera plataforma de desarrollo

3 mil millones de telfonos mviles ejecutan Java

El 100% de los reproductores de Blu-ray incluyen Java

5 mil millones de Java Cards en uso

125 millones de dispositivos de televisin ejecutan Java

5 de los 5 principales fabricantes de equipos originales utilizan Java ME

Por qu los desarrolladores de software eligen Java?

Java ha sido probado, ajustado, ampliado y probado por toda una comunidad de desarrolladores, arquitectos de aplica

de Java. Java est diseado para permitir el desarrollo de aplicaciones porttiles de elevado rendimiento para el m

plataformas informticas posible. Al poner a disposicin de todo el mundo aplicaciones en entornos heterogneos, la

proporcionar ms servicios y mejorar la productividad, las comunicaciones y colaboracin del usuario final y reducir dr

de propiedad tanto para aplicaciones de usuario como de empresa. Java se ha convertido en un valor impagable para
ya que les permite:

Escribir software en una plataforma y ejecutarla virtualmente en otra

Crear programas que se puedan ejecutar en un explorador y acceder a servicios Web disponibles

Desarrollar aplicaciones de servidor para foros en lnea, almacenes, encuestas, procesamiento de formularios H

Combinar aplicaciones o servicios que utilizan el lenguaje Java para crear aplicaciones o servicios con un gran
personalizacin

Escribir aplicaciones potentes y eficaces para telfonos mviles, procesadores remotos, microcontroladores, m
sensores, gateways, productos de consumo y prcticamente cualquier otro dispositivo electrnico

Formas en las que los desarrolladores de software aprenden a utilizar Java

Registrarse en JavaOne Muchas universidades ofrecen cursos de programacin sobre la plataforma Java. Oracle A

completa cartera de software, plan de estudios, tecnologa alojada, formacin de profesorado, soporte y recursos d

instituciones educativas de primaria y secundaria, escuelas taller y centros de enseanza superior para uso del profe

una oferta Java con capacidad para cientos de miles de alumnos. Adems, los desarrolladores tambin pueden mejora

de programacin Java consultando el sitio web de desarrolladores de Java de Oracle, suscribindose a los boletines so

y Java Magazine, utilizando el tutorial de Java y el centro para nuevos usuarios de programacin Java, adem
certificaciones y cursos web, virtuales o dirigidos por instructores especializados.

Oracle Technology Network es la comunidad ms grande del mundo de desarrolladores de aplicacin, administr

administradores de bases de datos, desarrolladores/administradores de sistemas y arquitectos que utilizan las tecno
sector en combinacin con productos de Oracle.

Programa de formacin en Java para jvenes desarrolladores

Desde pequeos, vamos aprendiendo lenguajes de programacin. Herramientas educativas visuales como, por ejempl

BlueJ ensean a los jvenes a programar con el lenguaje de programacin Java y otros lenguajes de programacin
pensados para facilitar su uso.
Qu es JavaFX?

JavaFX est basado en Java. La plataforma JavaFX permite a los desarrolladores de la aplicacin crear e imp

aplicaciones de Internet enriquecidas (RIA) que se comportan de la misma forma en distintas plataformas. JavaFX a

Java permitiendo a los desarrolladores utilizar cualquier biblioteca de Java en aplicaciones JavaFX. Los desarrollado

sus capacidades en Java y utilizar la tecnologa de presentacin que JavaFX proporciona para crear experiencias v
atractivas.

JAVA ME
JAVA PLATFORM, MICRO EDITION (JAVA ME)

Java Platform, Micro Edition (Java ME) provides a robust, flexible environment for applications running on embedded and mobile dev

Things: micro-controllers, sensors, gateways, mobile phones, personal digital assistants (PDAs), TV set-top boxes, printers and more

flexible user interfaces, robust security, built-in network protocols, and support for networked and offline applications that can be down
Applications based on Java ME are portable across many devices, yet leverage each device's native capabilities.

Palabra(s) clave:

Java ME SDK

The Oracle Java, Micro Edition (Java ME) Software Development Kit (SDK) provides device emulati

development environment and a set of utilities for rapid development of Java ME applications. It inte

Connected Limited Device Configuration (CLDC) and the Connected Device Configuration (CDC) te

one simple development environment. The Java ME SDK is a successor to the Sun Java Wireless T

Java Toolkit for CDC and offers improved device emulation, a standalone lightweight development e
powerful tools to speed application development.
Palabra(s) clave:

Kernel

The kernel is a program that constitutes the central core of a computer operating system. It has complete control over e
in the system.

A kernel can be contrasted with a shell (such as bash, csh or ksh in Unix-like operating systems), which is the outermos

system and a program that interacts with user commands. The kernel itself does not interact directly with the user, but

the shell and other programs as well as with the hardware devices on the system, including the processor (also called th
unit or CPU), memory and disk drives.

The kernel is the first part of the operating system to load into memory during booting (i.e., system startup), and it r
entire duration of the computer session because its services are required continuously. Thus it is important for it to be

while still providing all the essential services needed by the other parts of the operating system and by the various applic
Because of its critical nature, the kernel code is usually loaded into a protected area of memory, which prevents it from

other, less frequently used parts of the operating system or by application programs. The kernel performs its tasks

processes and handling interrupts, in kernel space, whereas everything a user normally does, such as writing text in a t

programs in a GUI (graphical user interface), is done in user space. This separation is made in order to prevent user d

from interfering with each other and thereby diminishing performance or causing the system to become unstable (and po

When a computer crashes, it actually means the kernel has crashed. If only a single program has crashed but the

remains in operation, then the kernel itself has not crashed. A crash is the situation in which a program, either a user ap

the operating system, stops performing its expected function(s) and responding to other parts of the system. The prog

the user to freeze. If such program is a critical to the operation of the kernel, the entire computer could stall or shut down

The kernel provides basic services for all other parts of the operating system, typically including memory ma

management, file management and I/O (input/output) management (i.e., accessing the peripheral devices). These servic

other parts of the operating system or by application programs through a specified set of program interfaces referred to a

Process management, possibly the most obvious aspect of a kernel to the user, is the part of the kernel that ensure

obtains its turn to run on the processor and that the individual processes do not interfere with each other by writing to th
A process, also referred to as a task, can be defined as an executing (i.e., running) instance of a program.

The contents of a kernel vary considerably according to the operating system, but they typically include (1) a schedule
how the various processes share the kernel's processing time (including in what order), (2) a supervisor, which grants

to each process when it is scheduled, (3) an interrupt handler, which handles all requests from the various hardware d

drives and the keyboard) that compete for the kernel's services and (4) a memory manager, which allocates the syste
(i.e., locations in memory) among all users of the kernel's services.

The kernel should not be confused with the BIOS (Basic Input/Output System). The BIOS is an independent program st

motherboard (the main circuit board of a computer) that is used during the booting process for such tasks as initializin

loading the kernel into memory. Whereas the BIOS always remains in the computer and is specific to its particular hard

be easily replaced or upgraded by changing or upgrading the operating system or, in the case of Linux, by adding
modifying an existing kernel.

Most kernels have been developed for a specific operating system, and there is usually only one version available

system. For example, the Microsoft Windows 2000 kernel is the only kernel for Microsoft Windows 2000 and the Mi

kernel is the only kernel for Microsoft Windows 98. Linux is far more flexible in that there are numerous versions of th
each of these can be modified in innumerable ways by an informed user.
A few kernels have been designed with the goal of being suitable for use with any operating system. The best known
kernel, which was developed at Carnegie-Mellon University and is used in the Macintosh OS X operating system.

It is not necessary for a computer to have a kernel in order for it to be usable, the reason being that it is not necess

operating system. That is, it is possible to load and run programs directly on bare metal machines (i.e., computers w
system installed), although this is usually not very practical.

In fact, the first generations of computers used bare metal operation. However, it was eventually realized that conven

could be increased by retaining small utility programs, such as program loaders and debuggers, in memory between
programs gradually evolved into operating system kernels.

The term kernel is frequently used in books and discussions about Linux, whereas it is used less often when dis

operating systems, such as the Microsoft Windows systems. The reasons are that the kernel is highly configurable in th

users are encouraged to learn about and modify it and to download and install updated versions. With the Microsoft
systems, in contrast, there is relatively little point in discussing kernels because they cannot be modified or replaced.
Categories of Kernels

Kernels can be classified into four broad categories: monolithic kernels, microkernels, hybrid kernels and exokernel
advocates and detractors.

Monolithic kernels, which have traditionally been used by Unix-like operating systems, contain all the operating system

the device drivers (small programs that allow the operating system to interact with hardware devices, such as disk driv

printers). Modern monolithic kernels, such as those of Linux and FreeBSD, both of which fall into the category of

systems, feature the ability to load modules at runtime, thereby allowing easy extension of the kernel's capabilities as re
to minimize the amount of code running in kernel space.

A microkernel usually provides only minimal services, such as defining memory address spaces, interprocess comm

process management. All other functions, such as hardware management, are implemented as processes running i
kernel. Examples of microkernel operating systems are AIX, BeOS, Hurd, Mach, Mac OS X, MINIX and QNX.
Hybrid kernels are similar to microkernels, except that they include additional code in kernel space so that such code

than it would were it in user space. These kernels represent a compromise that was implemented by some deve

demonstrated that pure microkernels can provide high performance. Hybrid kernels should not be confused with monol
load modules after booting (such as Linux).

Most modern operating systems use hybrid kernels, including Microsoft Windows NT, 2000 and XP. DragonFly BSD
variant) of FreeBSD, is the first non-Mach based BSD operating system to employ a hybrid kernel architecture.

Exokernels are a still experimental approach to operating system design. They differ from the other types of kernels in t

is limited to the protection and multiplexing of the raw hardware, and they provide no hardware abstractions on top of wh
be constructed. This separation of hardware protection from hardware management enables application developers
make the most efficient use of the available hardware for each specific program.

Exokernels in themselves they are extremely small. However, they are accompanied by library operating systems, whic

developers with the conventional functionalities of a complete operating system. A major advantage of exokernel-based

can incorporate multiple library operating systems, each exporting a different API (application programming interface), s
and one for Microsoft Windows, thus making it possible to simultaneously run both Linux and Windows applications.
The Monolithic Versus Micro Controversy

In the early 1990s, many computer scientists considered monolithic kernels to be obsolete, and they predicted that

revolutionize operating system design. In fact, the development of Linux as a monolithic kernel rather than a microke

flame war (i.e., a war of words on the Internet) between Andrew Tanenbaum, the developer of the MINIX operating
Torvalds, who originally developed Linux based largely on MINIX.

Proponents of microkernels point out that monolithic kernels have the disadvantage that an error in the kernel can cau

to crash. However, with a microkernel, if a kernel process crashes, it is still possible to prevent a crash of the system a

restarting the service that caused the error. Although this sounds sensible, it is questionable how important it is in realit
systems with monolithic kernels such as Linux have become extremely stable and can run for years without crashing.

Another disadvantage cited for monolithic kernels is that they are not portable; that is, they must be rewritten for each n
processor type) that the operating system is to be used on. However, in practice, this has not appeared to be a major
has not prevented Linux from being ported to numerous processors.

Monolithic kernels also appear to have the disadvantage that their source code can become extremely large. Source c

software as it is originally written (i.e., typed into a computer) by a human in plain text (i.e., human readable alphanum
before it is converted by a compiler into object code that a computer's processor can directly read and execute.

For example, the source code for the Linux kernel version 2.4.0 is approximately 100MB and contains nearly 3.38 millio

version 2.6.0 is 212MB and contains 5.93 million lines. This adds to the complexity of maintaining the kernel, and it also

new generations of computer science students to study and comprehend the kernel. However, the advocates of monolith

in spite of their size such kernels are easier to design correctly, and thus they can be improved more quickly than ca
systems.

Moreover, the size of the compiled kernel is only a tiny fraction of that of the source code, for example roughly 1.1MB

version 2.4 on a typical Red Hat Linux 9 desktop installation. Contributing to the small size of the compiled Linux k

dynamically load modules at runtime, so that the basic kernel contains only those components that are necessary fo
itself and to load modules.

The monolithic Linux kernel can be made extremely small not only because of its ability to dynamically load modules bu
ease of customization. In fact, there are some versions that are small enough to fit together with a large number

programs on a single floppy disk and still provide a fully functional operating system (one of the most popular of whi

ability to miniaturize its kernel has also led to a rapid growth in the use of Linux in embedded systems (i.e., computer cir
products).

Although microkernels are very small by themselves, in combination with all their required auxiliary code they are, in fa
monolithic kernels. Advocates of monolithic kernels also point out that the two-tiered structure of microkernel systems,

operating system does not interact directly with the hardware, creates a not-insignificant cost in terms of system efficienc

L
Lenguaje de programacin
Lenguaje de Programacin

Lenguaje artificial que puede ser usado para controlar el comportamiento de una mquina, especialmente una com
componen de un conjunto de reglas sintcticas y semnticas que permiten expresar instrucciones que luego sern
distinguirse de lenguaje informtico, que es una definicin ms amplia, puesto estos incluyen otros lenguajes como
que dan formato a un texto y no es programacin en s misma.

El programador es el encargado de utilizar un lenguaje de programacin para crear un conjunto de instrucciones que, a

programa o subprograma informtico. Los lenguajes de programacin pueden clasificarse segn el paradig

procedimentales, orientados a objetos, funcionales, lgicos, hbridos, etc. Son ejemplos de lenguajes de programaci
ActionScript, ada, python, pascal, c, basic, JAVA, JavaScript, etc.

Librera (Software)

(library). En informtica, una biblioteca es una coleccin o conjunto de subprogramas usados para desarrollar softw

bibliotecas no son ejecutables, pero s pueden ser usadas por ejecutables que las necesitan para poder funciona
mayora de los sistemas operativos proveen bibliotecas que implementan la mayora de los servicios del sistema.

Dichas libreras contienen comodidades que las aplicaciones modernas esperan que un sistema operativo provea. En
tambin suele referirse como "librera", una mala traduccin de library (que es en realidad biblioteca).
Tipos de bibliotecas Bsicamente existen dos tipos de bibliotecas:
* Biblioteca esttica (de enlace esttico).
* Biblioteca compartida (de enlace dinmico).

Linux
Linux is a high performance, yet completely free, Unix-like operating system that is suitable for use on a wide range of

products. Most distributions (i.e., versions) consist of a kernel (i.e., the core of the operating system) together with hun
and application programs in a coordinated package.

A narrower, and somewhat less common, meaning of the term Linux is just the kernel itself. However, when referrin
usually the expression the Linux kernel is used.

Linux was started as a hobby in 1991 by Linus Torvalds while a student at the University of Helsinki (in Finland) becau
with the MS-DOS operating system that came with his new personal computer. He greatly preferred the much more

UNIX that he had been using on the university's computers, but he was not able to afford the high licensing fees for an

versions then available. Today, Torvalds remains the spiritual leader of the Linux movement, and he still coordinates the
Linux kernel.
Rapid Growth

The use of Linux by individuals, corporations, government agencies and academic institutions around the world has be

and many computer experts think that it will eventually become the most widely used operating system for man
applications.

This rapid growth is a result of several factors including (1) the major advantages that Linux has over other operating

over the other Unix-like operating systems and the Microsoft Windows family of operating systems), (2) the rapid pr

made on further improving the performance and increasing the functions of Linux, (3) the expanding array of hig
programs, (4) the growing awareness by individuals, businesses and other organizations throughout the world of the
and (5) an increase in the number of people who are familiar with installing, administering and using Linux.

Well in excess of a hundred (and possibly more than two hundred) Linux distributions have been developed by

companies, non-commercial organizations and individuals. Some of the most popular are Red Hat, SuSE, Mandrake,

Linspire and Ubuntu. In addition to these mainstream distributions, numerous specialized distributions are also availa

optimized for specific types of computers or applications (e.g., for use on notebook computers or routers), those for s

countries (e.g., Polish or Chinese) and ultra-miniature distributions (some of which can even fit on just a single f
muLinux).
UNIX Clone

UNIX was originally developed by Ken Thompson in 1969 at Bell Labs, the highly innovative research arm of AT&

telecommunications monopoly). Much subsequent work was carried out at the University of California at Berkeley (UCB)

Linux is a clone of UNIX; that is, it was developed to mimic the form and function of UNIX but its source code wa

independently (i.e., none of it was copied from UNIX source code). Source code is the version of an operating system o

is originally written (i.e., typed into a computer) by a human in a programming language (e.g., the C language in th
kernel).

Linux incorporates all of the features that have made Unix-like systems the longest-lived and what many consider to b

systems still in widespread use. That is, it is a multiuser (i.e., allows multiple simultaneous users), multitasking, highly fle

configuration), inherently secure (including high resistance to viruses, spyware and other malware) and extraor

resistance to crashing and needing rebooting) operating system. A multitasking operating system is one in which m
processes (also referred to as tasks) can execute (i.e., run) on a single computer seemingly simultaneously and without
other.
As is the case with most of the Unix-like operating systems, Linux is a highly mature (and very sophisticated) work of

been skillfully crafted by the collective efforts of thousands of the best minds in computer science. There is no planned (
obsolescence.

Yet Linux is much more than just a clone of another highly successful operating system. It also represents a philosophy

incorporates the simple but elegant Unix philosophy but which also has also taken it a big step further and made it a
system.

Moreover, Linux is a product of the Internet era. In contrast to proprietary (i.e., commercial) operating systems, which h
mostly by paid programmers employed at corporations, Linux has been developed virtually since its inception by an
network of unpaid (but highly skilled and motivated) volunteers who communicate via the Internet.
Advantages as Compared With Proprietary Unix-like Systems

Linux has several important advantages over the proprietary Unix-like operating systems (e.g., AIX, HP-UX and Solaris)

software. This means that it is free both in a monetary sense and with regard to use. That is, everyone is permitted to d

the Internet (or obtain it from other sources, including from friends) at no cost And everyone is also permitted to us

purpose, including studying, modifying, extending, installing on as many computers as desired, making copies as man

and redistributing. This is possible because Torvalds wisely released it under a free software license, the GNU Ge

(GPL).

Yet another advantage of Linux as compared with proprietary Unix-like operating systems is that it can generally run on
of hardware, including both system types and processor types. For example, it can run on cell phones, game
computers, desktop computers, workstations, mainframes, supercomputers -- and even some wristwatches.
Linux is no longer the only Unix-like operating system that available under a free software license. There are several

the BSD (Berkeley Software Distribution) systems, which descended from work done on UNIX at UCB. Each of th

include FreeBSD, NetBSD, NetBSD and Darwin (which is used by Mac OS X), has its own advantages and disadvan

number of users of Linux is much greater than that of the BSDs, mainly because it is easier to use, particularly for
proficient.
Advantages as Compared With Microsoft Windows
Linux also has some very big advantages as compared with the Microsoft Windows family of operating systems2. The

businesses and other organizations can save vast sums of money because there are no licensing fees nor is their an
(and often disruptive) upgrades (so-called forced upgrades).

Linux can also cut administration and maintenance costs as compared with the Microsoft Windows operating sy

considerably more stable (it rarely crashes or needs rebooting) and is highly resistant to viruses and other malicious atta

In addition, Linux has the advantage that it can operate on older hardware that is unsuitable for newer versions of Micr

is because it is much more compactly written. Whereas upgrading to newer versions of Microsoft Windows generally re
for new hardware, it is often possible to upgrade to newer versions of Linux without buying any new equipment.

The availability of the source code for Linux can also offer substantial benefits to users as compared with the closed

code for the Microsoft Windows operating systems. For example, corporations, government agencies and other organ

the code for security holes, including secret backdoors that allow others (e.g., government agencies) to access or chan
source code also allows users to customize Linux to a far greater extent than can be done with closed source operating

Thousands of application programs are available for Linux. Many of them offer performance and functions at least equ

for Microsoft Windows and other operating systems. Moreover, most of them are also free software, and many are in
CDROMs that contain Linux and can be installed automatically during Linux installation.

Mquina virtual (Virtual Machine)


virtual machine
(1) The name given to various programming language interpreters. See Java Virtual Machine and Python.
(2) One instance of an operating system along with one or more applications running in an isolated partition within the
different operating systems to run in the same computer at the same time.

Virtual machines (VMs) are also widely used to run multiple instances of the same operating system, each running

different set of applications. The separate VM instances prevent applications from interfering with each other. If one app

affect the programs in the other VMs. This approach differs from a dual-boot or multiboot environment, in which the use
one OS at startup (see dual-boot). All virtual machines in the same computer run simultaneously.
VMs Are Like Machines Within the Machine

Each virtual machine functions as if it owned the entire computer. The operating systems in each VM partition are cal

systems," and they communicate with the hardware via the virtual machine monitor (VMM) control program. The V
hardware for each VM (for details, see virtual machine monitor).

Although a hot topic in the IT world, virtual machine technology dates back to the 1960s (see VM). The terms "v

"virtualization" are used synonymously; however, virtualization also refers to other techniques (see virtualization)
application virtualization and OS virtualization.

Non-Virtual Versus Virtual

This shows three applications running in a regular computer versus a virtualized computer. In the VM example, the gues
may be the same or different.

Paravirtualization and Hardware

Guest operating systems can run in a virtual machine with or without modification. If changes are made to the OS to re

is said to be "paravirtualized." For example, Linux and various Unix versions have been paravirtualized to run in the X

However, if the CPU hardware supports virtualization, Xen can run guest operating systems unmodified. In 2004 and 2

added virtualization to their CPUs, which traps the calls to the x86 hardware, making it easier to develop VMMs th
paravirtualized guest operating systems (see hardware virtualization).

Advantages of Virtualization
#1 - Consolidation

Multiple operating systems can run in the same server, eliminating the need to dedicate a single machine to one appli
applications can run simultaneously with their respective operating systems in multicore servers with many threads

space and power consumption in the datajustify. New versions of an OS and new applications can be deployed with
hardware.
#2 - Stability and Security

Conflicts can arise between supposedly stable applications, and troubleshooting can be daunting. As a resu

administrators often host each type of application in a separate server even if the server is grossly underutilized. Mult

running bread and butter applications are kept safely separated from each other. In addition, since each VM is isola

security breach in one does not affect the others. The fault tolerance and security brought about by the isolation of each
major benefit of virtualization.
#3 - Development Flexibility

A virtualized computer can host numerous versions of an operating system, allowing developers to test their progr

environments on the same machine. In addition, with each application running in its own virtual partition, crashing in one
not bring down the system.
#4 - Migration and Cloning
Virtual machines, each with their own OS and applications, function like self-contained packages that are said to be

hardware." It is relatively easy to move a VM from one server to another to balance the workload, to migrate to faster ha
recover from hardware failure. VMs can be quickly cloned and deployed.
#5 - Desktop Virtualization

An increasing trend is to store a user's desktop (OS and applications) in a separate virtual machine in the server a

dedicated terminal as a "thin client" to the server. Each user is isolated from all other users due to the virtual machine

maintenance of the applications is shifted from each user's desktop to the datajustify (see thin client). See virtu
virtualization, application virtualization and OS virtualization.

Middleware

Middleware is one of those tricky words that more or less describes what it does. It is software that connects different pa

or a series of applications. It can be though of as a sort of glue that holds a network and its connected computers toget
be a single application, or it can be an entire server.

People can also think of middleware as an adapter device that would run from a new printer to an older computer. The a

two devices, enabling communication and, therefore, functionality between them. Common packages inc
Computing Environment (DCE) and the Common Object Request Broker Architecture (CORBA).

Every type of middleware has the same general purpose: to allow multiple computers to do multiple things across a net

computer to do many things or one complicated thing across a network. For example, some is used to link a databa

server, allowing users to access the database via a Web browser. Certain complicated computer systems require this

order to run their demanding applications. A perfect example of a large form of middleware is an application server, whi
dedicated to a single application or a single type of application.

Вам также может понравиться