Mostrando entradas con la etiqueta Programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programacion. Mostrar todas las entradas

miércoles, 1 de septiembre de 2010

Oracle denuncia a Google por uso inapropiado de la licencia de Java

0 comentarios

La multinacional de las bases de datos detenta en su poder toda la propiedad intelectual de Sun Microsystems tras la operación de compra de esta, y no ha dudado en aprovechar su control sobre la tecnología de Java para arrastrar a Google a los tribunales.

Según argumenta Oracle la compañía del buscador basó su máquina virtual Dalvik (un componente de Android) en Java, pero sin licenciar la tecnología de forma adecuada a Sun u Oracle. Google, por su parte, se defiende argumentando que Dalvik es un desarrollo nuevo realizado partiendo de cero, y que no se basa en ningún software.

La máquina virtual Dalvik es la que ejecuta los programas en un smartphone equipado con Android, permitiendo con ello que las aplicaciones sean compatibles entre terminales (al no ejecutarse directamente contra el hardware si no sobre un intérprete) e interponiendo un nuevo nivel de seguridad que limita las acciones de posibles programas maliciosos.

El enfrentamiento ya ha provocado el abandono por parte de Google de la JavaOne, la conferencia para desarrolladores de este lenguaje de programación a la que la compañía del buscador llevaba años acudiendo.

En su demanda, Oracle llega a exigir que se eliminen todas las copias de Android existentes en el mercado, algo a todas luces imposible pero que tal vez se haya incluido para forzar a Google a negociar. Además de buscar una parte del pastel de las licencias de Android (y, de esta forma, monetizar Java),Oracle parece estar lanzando una clara advertencia a las demás compañías informáticas.

Los casos legales de patentes relacionadas con el sector tecnológico tampoco son raros, lo que ha llevado a algunas personas a apoyar la abolición o, por lo menos, reformulación del sistema de patentes actualmente en vigor.

viernes, 20 de agosto de 2010

Programación orientada a objetos

0 comentarios

La programación orientada aobjetos es un sistema de programar que permite técnicas de encapsulación, herencia, modularidad, y polimorfismo. Fue creado para realizar programas de simulación. Se trata de un tipo de programación en la que los programadores definen no sólo el tipo de datos (de una estructura de datos), sino también los tipos de operaciones (funciones) que se pueden aplicar a dicha estructura. De esta forma, la estructura dedatos se convierte en un objeto que incluye tanto los datos como funciones, además, los programadores pueden crear relaciones entre un objeto y otro. Por ejemplo, los objetos pueden heredar características de otros objetos.

Una de las principales ventajas de la programación orientada a objetos sobre otras técnicas de programación, es que la orientada a objetos permite a losprogramadores crear módulos que no son necesarios cambiar cuando un nuevo tipo de objeto se añade. Un programador puede simplemente crear un nuevo objeto que hereda muchas de sus características de objetos ya existentes. Esto hace que los programas orientados a objetos sean más fáciles de modificar.

Para realizar la programación orientada a objetos, se necesita un lenguaje orientado a objetos como (OOPL). Java, C + + o Smalltalk, que son tres de los idiomas más populares.

Un poco de historia
En la década de los 60, los programadores se dieron cuenta de que los sistemas deprogramación debían ser divididos en pequeñas unidades más manejables. La introducción de
Simula-67 trajo consigo el primer lenguaje orientado a objeto: clases y una forma de herencia, por esto, Simula es un hito importante en el avance de laprogramación orientada a objetos.

¿Qué es Java?

0 comentarios

Java es un lenguaje originalmente desarrollado por un grupo de ingenieros de Sun, utilizado por Netscape posteriormente como base para Javascript. Si bien su uso se destaca en el Web, sirve para crear todo tipo de aplicaciones (locales, intranet o internet).

Java es un lenguaje:
· de objetos
·
independiente de la plataforma

Algunas características notables:
· robusto
· gestiona la memoria automáticamente
· no permite el uso de técnicas de
programación inadecuadas
· multithreading
· cliente-servidor
· mecanismos de seguridad incorporados
· herramientas de documentación incorporadas

Lenguaje de Objetos
Por qué puse "de" objetos y no "orientado a" objetos? Para destacar que, al contrario de otros lenguajes como C++, no es un lenguaje modificado para poder trabajar con objetos sino que es un lenguaje creado para trabajar con objetosdesde cero. De hecho, TODO lo que hay en Java son objetos.

Qué es un objeto?
Bueno, se puede decir que todo puede verse como un
objeto. Pero seamos más claros. Un objeto, desde nuestro punto de vista, puede verse como una pieza de software que cumple con ciertas características:
· encapsulamiento
· herencia

Encapsulamiento significa que el objeto es auto-contenido, o sea que la misma definición del objeto incluye tanto los datos que éste usa (atributos) como los procedimientos (métodos) que actúan sobre los mismos.

Cuando se utiliza programación orientada a objetos, se definen clases (que definenobjetos genéricos) y la forma en que los objetos interactúan entre ellos, a través de mensajes. Al crear un objeto de una clase dada, se dice que se crea una instancia de la clase, o un objeto propiamente dicho. Por ejemplo, una clase podría ser "autos", y un auto dado es una instancia de la clase.

La ventaja de esto es que como no hay programas que actúen modificando al objeto, éste se mantiene en cierto modo independiente del resto de la aplicación. Si es necesario modificar el objeto (por ejemplo, para darle más capacidades), esto se puede hacer sin tocar el resto de la aplicación… lo que ahorra mucho tiempo de desarrollo y debugging! En Java, inclusive, ni siquiera existen las variables globales! (Aunque parezca difícil de aceptar, esto es una gran ventaja desde el punto de vista del desarrollo).

En cuanto a la
herencia, simplemente significa que se pueden crear nuevas clases que hereden de otras preexistentes; esto simplifica la programación, porque las clases hijas incorporan automáticamente los métodos de las madres. Por ejemplo, nuestra clase "auto" podría heredar de otra más general, "vehículo", y simplemente redefinir los métodos para el caso particular de los automóviles… lo que significa que, con una buena biblioteca de clases, se puede reutilizar mucho código inclusive sin saber lo que tiene adentro.

Un ejemplo simple
Para ir teniendo una idea, vamos a poner un ejemplo de una clase Java:

public class Muestra extends Frame {
// atributos de la clase
Button si;
Button no;
// métodos de la clase:
public Muestra () {
Label comentario = new Label("Presione un botón", Label.CENTER);
si = new Button("Sí");
no = new Button("No");
add("North", comentario);
add("East", si);
add("West", no);
}}

Esta clase no está muy completa así, pero da una idea… Es una clase heredera de la clase Frame (un tipo de ventana) que tiene un par de botones y un texto. Contiene dos atributos ("si" y "no"), que son dos objetos del tipo Button, y un único método llamado Muestra (igual que la clase, por lo que es lo que se llama un constructor).

Historia del lenguaje C++

0 comentarios
El comité para el estándar ANSI C fue formado en 1983 con el objetivo de crear unlenguaje uniforme a partir del C original, desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estándar lo marcaba el libro escrito en 1978 por estos dos autores1.

El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue B. Stroustrup, también de la ATT. Al comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. El nombre C++ es también de ese año, y hace referencia al carácter del operador incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI (seguido algún tiempo después por uncomité ISO) para estandarizarlo a nivel americano e internacional.

En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisión y eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar aplicaciones en Internet.
Hay que señalar que el C++ ha influido en algunos puntos muy importantes del ANSIC, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de éste fueron tomadas del C++.

El C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con él, aunque ya se ha dicho que presenta ciertas ventajas (las modificaciones menores, que se verán a continuación). Como lenguaje orientado a objetos se basa en una filosofía completamente diferente, que exige del programador un completo cambio de mentalidad. Las características propias de la Programación Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que sí que cambian radicalmente su naturaleza.

redireccion