martes, 31 de marzo de 2009

Java
Estructura y gestión de datos
En la actualidad existen diversos tipos de lenguajes que han sido creados para una determinada función, están especialmente diseñados para facilitar la programación de distintos tipos de problemas, garantizando la seguridad de las aplicaciones para obtener una mayor facilidad de programación y conseguir un mayor aprovechamiento de los recursos del ordenador.
Cuando un programador elige un lenguaje debe pensar en sus necesidades y la facilidad de la programación.
Como nuevos estudiantes de java debemos preguntarnos para que fue pensado este programa.

Que es java?
Java es un lenguaje de programación con el que podemos realizar cualquier tipo de programa. En la actualidad es un lenguaje muy extendido y cada vez cobra más importancia tanto en el ámbito de Internet como en la informática en general. Está desarrollado por la compañía Sun Microsystems con gran dedicación y siempre enfocado a cubrir las necesidades tecnológicas más punteras.

¿Para que se creo java?
La tecnología Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box (cuya traducción literal al español es aparato que se coloca encima del televisor, es el nombre con el que se conoce el dispositivo encargado de la recepción y opcionalmente decodificación de señal de televisión analógica o digital (DTV), para luego ser mostrada en un dispositivo de televisión) en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991


Características de java
Las características mas generales de java nos ayudaran haber para que tipo de problemas esta pensado este lenguaje:
Simple: es un lenguaje sencillo de aprender de sintaxis parecida ala de c++ pero mas simplificado. Cabe aclarar que los creadores de java partieron de la sintaxis de c++, tratando de eliminar las partes complicadas y las fuentes de error del lenguaje.
Orientado a objeto: posiblemente sea el lenguaje mas orientado a objeto de los existentes; en java todo a excepción de los tipos fundamentales de variables (int, char, long, etc.) es un objeto.
Distribuido: java esta muy orientado al trabajo en red soportando protocolos como tcp/IP, udp, http y ftp. El uso de estos protocolos es bastante sencillo comparándolo con otros lenguajes que los soportan
HTTP define la sintaxis y la semántica que utilizan los elementos software de la arquitectura Web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor.

Robusto
El compilador java detecta muchos errores que otros compiladores solo detectarían en tiempo de ejecución o incluso nunca.
If(a=b) then, el compilador java no nos dejaría compilar este código.
Seguro: es un lenguaje muy seguro en cuanto al desarrollo de sus aplicaciones, especialmente en los apple. Esto son programas diseñados para ser ejecutados en una página Web. El programa java garantiza que ningún apple puede escribir o leer desde nuestro disco, o mandar información del usuario que accede ala pagina a través de la red (como por ejemplo la dirección de correo electrónico. En general no permite realizar cualquier acción que pudiera dañar la maquina o violar la intimidad del que visita la pagina Web.
portable: en java no hay aspectos dependientes de la inplementacion, java sigen los mismos estandares en cuanto a tamaño y almacenamiento de datos, esto no ocurre asi en c++ por ejemplo. en este un entero puede tener un tamaño de 16, 32, o mas bits siendo la unica limitacion que un entero sea mayor que un yort o menor que un long int. c++ vajo sistema operativo iunit almacena los datos en formatos littleendia mientras que vajo windon lo ase en formato big endia. java lo ase siempre en little endian para evitar comfucion.
nota: Big y Little Endian se refiere al formato en el cual un dato con múltiples bytes se ordena para escribirse en la memoria de una computadora.
En el formato Big Endian el extremo más grande de cualquier dato aparece en primer lugar. El segundo formato Little Endian se almacena al contrario, es decir al inicio se pone el dato más pequeño.
Conocer estos formatos nos ayudan a interpretar archivos correctamente, ya que el uso entre formatos Big-endian y Little endian depende de la arquitectura del procesador. Un ejemplo más concreto de esto es Intel(Little Endian) y Apple clásico (Big Endian).

Es PORTABLE :
Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros estándares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y además, enteros de 32 bits en complemento a 2. Además, Java construye sus interfaces de usuario a través de un sistema abstracto de ventanas de forma que las ventanas puedan ser implantadas en entornos Unix, Pc o Mac.

Es INTERPRETADO :
El intérprete Java (sistema run-time) puede ejecutar directamente el código objeto. Enlazar (linkar) un programa, normalmente, consume menos recursos que compilarlo, por lo que los desarrolladores con Java pasarán más tiempo desarrollando y menos esperando por el ordenador. No obstante, el compilador actual del JDK es bastante lento. Por ahora, que todavía no hay compiladores específicos de Java para las diversas plataformas, Java es más lento que otros lenguajes de programación, como C++, ya que debe ser interpretado y no ejecutado como sucede en cualquier programa tradicional.

Se dice que Java es de 10 a 30 veces más lento que C, y que tampoco existen en Java proyectos de gran envergadura como en otros lenguajes. La verdad es que ya hay comparaciones ventajosas entre Java y el resto de los lenguajes de programación, y una ingente cantidad de folletos electrónicos que supuran fanatismo en favor y en contra de los distintos lenguajes contendientes con Java. Lo que se suele dejar de lado en todo esto, es que primero habría que decidir hasta que punto Java, un lenguaje en pleno desarrollo y todavía sin definición definitiva, está maduro como lenguaje de programación para ser comparado con otros; como por ejemplo con Smalltalk, que lleva más de 20 años en cancha.

Es MULTITHREADED :
Al ser multithreaded (multihilvanado, en mala traducción), Java permite muchas actividades simultáneas en un programa. Los threads (a veces llamados, procesos ligeros), son básicamente pequeños procesos o piezas independientes de un gran proceso. Al estar los threads contruidos en el lenguaje, son más fáciles de usar y más robustos que sus homólogos en C o C++.
El beneficio de ser miltithreaded consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento en tiempo real está limitado a las capacidades del sistema operativo subyacente (Unix, Windows, etc.), aún supera a los entornos de flujo único de programa (single-threaded) tanto en facilidad de desarrollo como en rendimiento.

Cualquiera que haya utilizado la tecnología de navegación concurrente, sabe lo frustrante que puede ser esperar por una gran imagen que se está trayendo. En Java, las imágenes se pueden ir trayendo en un thread independiente, permitiendo que el usuario pueda acceder a la información en la página sin tener que esperar por el navegador.

Es DINAMICO :
Java se beneficia todo lo posible de la tecnología orientada a objetos. Java no intenta conectar todos los módulos que comprenden una aplicación hasta el tiempo de ejecución. Las librería nuevas o actualizadas no paralizarán las aplicaciones actuales (siempre que mantengan el API anterior).


miércoles, 25 de marzo de 2009

Programacion Orientada a Objetos

Introducción

La programación orientada a objetos expresa un programa como un conjunto de objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener y reutilizar.

De esta forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos.

Los métodos y atributos están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a ninguno de ellos, hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.

Origen

Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado para hacer simulaciones, creado en el Centro de Cómputo Noruego en Oslo. Al parecer, en este centro, trabajaban en simulaciones de naves, y fueron confundidos por la explosión combinatoria de cómo las diversas cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para agrupar los diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y comportamiento. Fueron refinados más tarde para ser un sistema completamente dinámico en el cual los objetos se podrían crear y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos.

La programación orientada a objetos tomó posición como el estilo de programación dominante a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del lenguaje de programación C.

Las características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, entre otros. La adición de estas características a los lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de compatibilidad y a la capacidad de mantenimiento del código. Los lenguajes orientados a objetos "puros", por otra parte, carecían de las características de las cuales muchos programadores habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas características imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente reemplazado por Java, en gran parte debido a la aparición de Internet, y a la implementación de la máquina virtual de Java en la mayoría de navegadores. PHP en su versión 5 se ha ido modificando y soporta una orientación completa a objetos, cumpliendo todas las características propias de la orientación a objetos.

Conceptos fundamentales

La programación orientada a objetos es una nueva forma de programar que trata de encontrar una solución a estos problemas. Entre ellos destacan los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas, (de c a d),Es la facilidad mediante la cual la clase D ha definido en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D.

Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos). Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.

Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.

Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.

Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.

Atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.

Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
Componentes de un objeto:atributos, identidad, relaciones y métodos.

Representación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.

Características de la POO

Hay un cierto desacuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las características siguientes son las más importantes (para más información, seguir los enlaces respectivos):

Abstracción: Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.

miércoles, 18 de marzo de 2009

tabla comparativa


Creador
Fecha de la primera edición pública
Última versión estable
Coste (USD)
Licencia de softwares
Motor de navegación actual
Amaya
W3C, INRIA
14 de noviembre de 1996
10.0.1
Gratuito
Libre: W3C
propio
Camino
The Camino Project
febrero de 2002
1.5
Gratuito
Libre: MPL, MPL/GNU/GN LGNU tri-licencia
Gecko
Chrome
Google
septiembre de 2008
1.0.154.36
Gratuito
Libre: BSD
WebKit
Dillo
Arellano Cid, Geerken, Rota, et al.
diciembre de 1999
2.1
Gratuito
Libre: GNU
gzilla
ELinks
Baudis, Fonseca, et al.
diciembre de 2001
0.10.6
Gratuito
Libre: GNU
propio
Epiphany
GNOME
diciembre de 2002
2.18.0
Gratuito
Libre: GNU
Gecko
Flock
The Flock Team
1.2.5
Gratuito
Libre: GNU
Gecko
Galeon
Marco Pesenti Gritti
junio de 2000
2.0.1
Gratuito
Libre: GNU
Gecko
iCab
Alexander Clauss
1998
4.0.0
Gratuito (previa),$30 (pro)
Software no libre
iCab
Internet Explorer
Microsoft,Spyglass
agosto de 1995
7.0.5730.11[1]
Gratuito
Software no libre
Trident
Internet Explorer para Mac
Microsoft
27 de marzo de 2000
5.2.3
Gratuito
Software no libre
Tasman
K-Meleon
Doozan, Erikson, Vallet, Dorian et al.
26 de noviembre de 2000
1.5.1
Gratuito
Libre: GNU
Gecko
Konqueror
KDE
octubre de 2000
4.1.2
Gratuito
Libre: GNU
KHlML
Links
Twibright Labs
1999
2.2
Gratuito
Libre: GNU
propio
Lynx
Montulli, Grobe, Rezac, et al.
julio de 1993
2.8.6
Gratuito
Libre: GNU
propio
Maxthon
Maxthon International Limited
11 de julio de 2002
2.0.8.1720
Gratuito
Software no libre
Trident y soporte parcial para Gecko
Mosaic
Marc Andreessen and Eric Bina, NCSA
2 de abril de 1993
2.6
Gratuito (no comercial)
Software no libre
propio
Mozilla
Mozilla Foundation
7 de diciembre de 1998
1.7.13
Gratuito
Libre: MPL, MPL/GNU/LGNU tri-licencia
Gecko
Mozilla Firefox
Mozilla Foundation
26 de septiembre de 2002
3.0.7
Gratuito
Libre: MPL, MPL/GNU/LGNU tri-licencia
Gecko
Netscape
División Netscape de AOL
14 de noviembre de 2000
9.0.0.6
Gratuito
Software no libre, MPL/GNU/LGNU tri-licencia
Gecko (Usado desde la versión 9)
OmniWeb
The Omni Group
17 de marzo de 1995
5.7
$30
Software no libre,partes bajo símil-BSD
WebKit
Opera
Opera Software
8 de diciembre de 1996
9.64
Gratuito
Software no libre
Presto
Safari
Apple Inc.
23 de junio de 2003
3.2.3
Parte de Mac OS X[2]
Software no libre,partes bajo GNU LGNU
WebKit
SeaMonkey
SeaMonkey Council
30 de enero de 2006
1.1.13
Gratuito
Libre: MPL, MPL/GNU/GNU LGNU tri-licencia
Gecko
WorldWideWeb
Tim Berners-Lee
agosto de 1991
0.17
Gratuito
Libre: Dominio público
NeXTSTEP built-in
Creador
Fecha de la primera edición pública
Última versión estable
Coste (USD)
Licencia de software
Motor de navegación actual

Soporte de sistemas operativos

sistema operativo

El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc.
En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema.
Clasificación de los Sistemas Operativos
Los sistemas operativos pueden ser clasificados de la siguiente forma:
Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.
Multiprocesador: soporta el abrir un mismo programa en más de una cpu.
Multitarea: Permite que varios programas se ejecuten al mismo tiempo.
Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.
Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.
Cómo funciona un Sistema Operativo
Los sistemas operativos proporcionan una plataforma de software encima de la cual otros programas, llamados aplicaciones, puedan funcionar. Las aplicaciones se programan para que funcionen encima de un sistema operativo particular, por tanto, la elección del sistema operativo determina en gran medida las aplicaciones que puedes utilizar.
Los sistemas operativos más utilizados en los PC son DOS, OS/2, y Windows, pero hay otros que también se utilizan, como por ejemplo Linux.
Cómo se utiliza un Sistema Operativo
Un usuario normalmente interactúa con el sistema operativo a través de un sistema de comandos, por ejemplo, el sistema operativo DOS contiene comandos como copiar y pegar para copiar y pegar archivos respectivamente. Los comandos son aceptados y ejecutados por una parte del sistema operativo llamada procesador de comandos o intérprete de la línea de comandos. Las interfaces gráficas permiten que utilices los comandos señalando y pinchando en objetos que aparecen en la pantalla.
Ejemplos de Sistema Operativo
A continuación detallamos algunos ejemplos de sistemas operativos:
Familia Windows
Windows 95
Windows 98
Windows ME
Windows NT
Windows 2000
Windows 2000 server
Windows XP
Windows Server 2003
Windows CE
Windows Mobile
Windows XP 64 bits
Windows Vista (Longhorn)
Familia Macintosh
Mac OS 7
Mac OS 8
Mac OS 9
Mac OS X
Familia UNIX
AIX
AMIX
GNU/Linux
GNU / Hurd
HP-UX
Irix
Minix
System V
Solaris
UnixWare