lunes, 30 de enero de 2017

El lenguaje de programación Java

El lenguaje de programación Java


Java - una isla de Indonesia, un tipo de café, y un lenguaje de programación. Tres significados muy diferentes, cada uno en diferentes grados de importancia. La mayoría de los programadores, sin embargo, están interesados ​​en el lenguaje de programación Java. En tan sólo unos pocos años (desde finales de 1995), Java ha tomado la comunidad de software por la tormenta. Su éxito fenomenal ha convertido a Java en el lenguaje de programación de más rápido crecimiento jamás visto. Hay un montón de bombo sobre Java, y lo que puede hacer. Muchos programadores y usuarios finales están confundidos acerca de lo que es exactamente, y lo que Java ofrece.

Java es un lenguaje revolucionario


Las propiedades que hacen que Java sea tan atractivo están presentes en otros lenguajes de programación. Muchos idiomas son ideales para ciertos tipos de aplicaciones, incluso más que Java. Pero Java reúne todas estas propiedades en un solo idioma. Este es un avance revolucionario para la industria del software.
Echemos un vistazo a algunas de las propiedades con más detalle:

  •     orientado a objetos
  •     portátil
  •     Multihilo
  •     Recogida automática de basura
  •     seguro
  •     Red y "Internet" consciente
  •     Simplicidad y facilidad de uso

Orientado a objetos


Muchos lenguajes antiguos, como C y Pascal, eran lenguajes procedurales. Los procedimientos (también llamados funciones) eran bloques de código que formaban parte de un módulo o aplicación. Los procedimientos pasaron parámetros (tipos de datos primitivos como números enteros, caracteres, cadenas y números de coma flotante). El código fue tratado por separado para los datos. Tuvieron que pasar alrededor de las estructuras de datos, y los procedimientos podrían modificar fácilmente su contenido. Esto fue una fuente de problemas, ya que partes de un programa podrían tener efectos imprevistos en otras partes. Seguimiento de qué procedimiento fue culpable desperdició una gran cantidad de tiempo y esfuerzo, sobre todo con los grandes programas.
En algún lenguaje de procedimiento, incluso podría obtener la ubicación de memoria de una estructura de datos. Armado con esta ubicación, podría leer y escribir en los datos más adelante o sobrescribir accidentalmente el contenido.
Java es un lenguaje orientado a objetos. Un lenguaje orientado a objetos se ocupa de objetos. Los objetos contienen datos (variables de miembro) y código (métodos). Cada objeto pertenece a una clase particular, que es un plano que describe las variables miembro y los métodos que ofrece un objeto. En Java, casi todas las variables son un objeto de algún tipo u otro - incluso cadenas. La programación orientada a objetos requiere una forma diferente de pensar, pero es una mejor manera de diseñar software que la programación de procedimientos.
Hay muchos lenguajes orientados a objetos populares disponibles hoy en día. Algunos como Smalltalk y Java están diseñados desde el principio para estar orientados a objetos. Otros, como C ++, están parcialmente orientados a objetos y parcialmente procesales. En C ++, todavía puede sobrescribir el contenido de estructuras de datos y objetos, haciendo que la aplicación se bloquee. Afortunadamente, Java prohíbe el acceso directo a los contenidos de la memoria, lo que lleva a un sistema más robusto.


Portátil


La mayoría de los lenguajes de programación están diseñados para un sistema operativo y una arquitectura de procesador específicos. Cuando el código fuente (las instrucciones que componen un programa) se compilan, se convierte en código de máquina que se puede ejecutar sólo en un tipo de máquina. Este proceso produce código nativo, que es extremadamente rápido.
Otro tipo de lenguaje es el que se interpreta. El código interpretado es leído por una aplicación de software (el intérprete), que realiza las acciones especificadas. El código interpretado a menudo no necesita ser compilado - se traduce como se ejecuta. Por esta razón, el código interpretado es bastante lento, pero a menudo portátil a través de diferentes sistemas operativos y arquitecturas de procesador.
Java toma lo mejor de ambas técnicas. El código Java se compila en un código de máquina neutral de la plataforma, que se llama Java bytecode. Un tipo especial de intérprete, conocido como Java Virtual Machine (JVM), lee el bytecode y lo procesa. La Figura 1 muestra un desmontaje de una pequeña aplicación Java. El bytecode, indicado por la flecha, se representa en forma de texto aquí, pero cuando se compila se representa como bytes para conservar el espacio.


El enfoque de Java ofrece algunas grandes ventajas sobre otros lenguajes interpretados. En primer lugar, el código fuente está protegido de la vista y la modificación - sólo el bytecode debe ponerse a disposición de los usuarios. En segundo lugar, los mecanismos de seguridad pueden escanear bytecode para detectar signos de modificación o código dañino, complementando los otros mecanismos de seguridad de Java. Sin embargo, lo más importante es que el código Java se puede compilar una vez y ejecutarse en cualquier combinación de máquina y sistema operativo que admita una máquina virtual Java (JVM). Java puede funcionar en Unix, Windows, Macintosh, e incluso el piloto de la palma. Java puede incluso ejecutarse dentro de un navegador web, o un servidor web. Ser portátil significa que la aplicación sólo tiene que ser escrita una vez - y luego puede ejecutarse en una gama más amplia de máquinas. Esto ahorra mucho tiempo y dinero.

Multihilo


Si alguna vez ha escrito aplicaciones complejas en C, o PERL, probablemente habrá encontrado el concepto de múltiples procesos antes. Una aplicación puede dividirse en copias independientes, que se ejecutan simultáneamente. Cada copia replica código y datos, lo que resulta en un mayor consumo de memoria. Obtener las copias para hablar juntos puede ser complejo y frustrante. La creación de cada proceso implica una llamada al sistema operativo, que también consume tiempo de CPU adicional.
Un mejor modelo es utilizar múltiples subprocesos de ejecución, conocidos como subprocesos para abreviar. Los hilos pueden compartir datos y código, facilitando el intercambio de datos entre instancias de subprocesos. También utilizan menos memoria y sobrecarga de la CPU. Algunos lenguajes, como C ++, tienen soporte para los subprocesos, pero son complejos de usar. Java tiene soporte para múltiples subprocesos de ejecución construidos directamente en el lenguaje. Los hilos requieren una manera diferente de pensar, pero se pueden entender muy rápidamente. Soporte de subprocesos en Java es muy simple de usar, y el uso de subprocesos en aplicaciones y applets es bastante común.


Recolección automática de basura


No, no estamos hablando de sacar la basura (aunque una computadora que literalmente podría hacer que sería algo ordenado). El término recolección de basura se refiere a la recuperación del espacio de memoria no utilizado. Cuando las aplicaciones crean objetos, la JVM asigna espacio de memoria para su almacenamiento. Cuando el objeto ya no es necesario (no existe ninguna referencia al objeto), el espacio de memoria se puede recuperar para su uso posterior.
Los idiomas como C + + obligan a los programadores a asignar y desasignar la memoria de datos y objetos manualmente. Esto agrega complejidad adicional, pero también causa otro problema - pérdidas de memoria. Cuando los programadores olvidan desasignar memoria, la cantidad de memoria libre disponible se disminuye. Los programas que con frecuencia crean y destruyen objetos pueden eventualmente descubrir que no queda memoria. En Java, el programador está libre de tales preocupaciones, ya que la JVM realizará la recolección automática de objetos basura.


Seguro


La seguridad es un gran problema con Java. Dado que los applets de Java se descargan de forma remota y se ejecutan en un navegador, la seguridad es una gran preocupación. No querríamos que los applets lean nuestros documentos personales, eliminen archivos o causen daño. En el nivel de API, hay fuertes restricciones de seguridad en el acceso a archivos y redes para applets, así como el soporte de firmas digitales para verificar la integridad del código descargado. En el nivel de bytecode, se realizan comprobaciones para hacks obvios, como manipulación de pila o bytecode no válido. Los fuertes mecanismos de seguridad en Java ayudan a proteger contra violaciones inadvertidas o intencionales de seguridad, pero es importante recordar que ningún sistema es perfecto. El eslabón más débil de la cadena es la máquina virtual Java en la que se ejecuta: una JVM con conocidas debilidades de seguridad puede ser propensa a atacar. También vale la pena señalar que, si bien ha habido algunas deficiencias identificadas en JVM, son raras, y por lo general se fijan rápidamente.


Red y "Internet" consciente


Java fue diseñado para ser "Internet" consciente, y para apoyar la programación de red. La API de Java proporciona un amplio soporte de red, desde sockets y direcciones IP, a URL y HTTP. Es extremadamente fácil escribir aplicaciones de red en Java, y el código es completamente portátil entre plataformas. En lenguajes como C / C ++, el código de red debe ser reescrito para diferentes sistemas operativos, y suele ser más complejo. El soporte de red de Java ahorra mucho tiempo y esfuerzo.
Java también incluye soporte para una programación de red más exótica, como la invocación de métodos remotos (RMI), CORBA y Jini. Estas tecnologías de sistemas distribuidos hacen de Java una opción atractiva para sistemas distribuidos grandes.


Simplicidad y facilidad de uso


Java extrae sus raíces del lenguaje C ++. C ++ es ampliamente utilizado, y muy popular. Sin embargo, se considera un lenguaje complejo, con características como herencia múltiple, plantillas y punteros que son contraproducentes. Java, por otro lado, está más cerca de un lenguaje "puro" orientado a objetos. El acceso a los punteros de memoria se elimina, y las referencias de objeto se utilizan en su lugar. Se ha eliminado el soporte para la herencia múltiple, lo que se presta a diseños de clase más claros y más sencillos.
La biblioteca de E / S y de red es muy fácil de usar, y la API de Java proporciona a los desarrolladores mucho código de ahorro de tiempo (como redes y estructuras de datos). Después de usar Java por un tiempo, la mayoría de los desarrolladores se resisten a volver a otros idiomas, debido a la sencillez y elegancia de Java.
 

Resumen


Java ofrece a los desarrolladores muchas ventajas. Mientras que la mayoría de estos están presentes en otros idiomas, Java combina todos estos juntos en un solo idioma. El rápido crecimiento de Java ha sido nada menos que fenomenal, y no muestra signos (¡aún!) De desaceleración. En la columna del mes que viene, hablaré más sobre el corazón de Java: la Máquina Virtual Java.



  

No hay comentarios.:

Publicar un comentario