Translate

lunes, 22 de septiembre de 2014

Que es JAVA?


Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos y basado en clases que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recopilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios reportados.
El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en 1995 como un componente fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva en gran medida de C y C++, pero tiene menos utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente.
MAQUINA VIRTUAL JAVA 
es una máquina virtual de proceso nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el bytecode Java), el cual es generado por el compilador del lenguaje Java.
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. Como todas las piezas del rompecabezas Java, fue desarrollado originalmente por Sun.
La JVM es una de las piezas fundamentales de la plataforma Java. Básicamente se sitúa en un nivel superior al hardware del sistema sobre el que se pretende ejecutar la aplicación, y este actúa como un puente que entiende tanto el bytecode como el sistema sobre el que se pretende ejecutar. Así, cuando se escribe una aplicación Java, se hace pensando que será ejecutada en una máquina virtual Java en concreto, siendo ésta la que en última instancia convierte de código bytecode a código nativo del dispositivo final.
La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje, de manera que desde Sun Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas, y, así, un programa .class escrito en Windows puede ser interpretado en un entorno Linux. Tan solo es necesario disponer de dicha máquina virtual para dichos entornos. De ahí el famoso axioma que sigue a Java: "escríbelo una vez, ejecútalo en cualquier parte", o "Write once, run anywhere".
Pero los intentos de la compañía propietaria de Java y productos derivados de construir microprocesadores que aceptaran el Java bytecode como su lenguaje de máquina fueron más bien infructuosos.
La máquina virtual de Java puede estar implementada en software, hardware, una herramienta de desarrollo o un Web browser; lee y ejecuta código precompilado bytecode que es independiente de la plataforma multiplataforma. La JVM provee definiciones para un conjunto de instrucciones, un conjunto de registros, un formato para archivos de clases, la pila, un heap con recolector de basura y un área de memoria. Cualquier implementación de la JVM que sea aprobada por SUN debe ser capaz de ejecutar cualquier clase que cumpla con la especificación.
Existen varias versiones, en orden cronológico, de la máquina virtual de Java. En general la definición del Java bytecode no cambia significativamente entre versiones, y si lo hace, los desarrolladores del lenguaje procuran que exista compatibilidad hacia atrás con los productos anteriores.
A partir de J2SE 5.0, los cambios en la especificación de la JVM han sido desarrollados bajo el auspicio de la Java Community Process (JCP) y especificada en la JSR 924. Desde el año 2006, cambios en la especificación para soportar las modificaciones del formato del fichero de clases (JSR 202 ) se están llevando a cabo en una versión de mantenimiento en la JSR 924. Las especificaciones para la JVM están publicadas en lo que se conoce como "el libro azul". Así reza el prefacio: Esperamos que esta especificación documente suficientemente la Máquina Virtual de Java para hacer posibles implementaciones desde cero. Sun proporciona tests que verifican que las implementaciones de la Máquina Virtual de Java opere correctamente
Kaffe es un ejemplo de una implementación de JVM desde cero. Sun es la propietaria de la marca registrada "Java", que usa para certificar aquellas implementaciones que se ajustan y son totalmente compatibles con sus especificaciones.



COMPILADOR

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente.








jueves, 28 de agosto de 2014

OPERADORES LÓGICOS PRINCIPALES EN JAVA

 En Java disponemos de los operadores lógicos habituales en lenguajes de programación como son “es igual”, “es distinto”, menor, menor o igual, mayor, mayor o igual, and (y), or (o) y not (no). La sintaxis se basa en símbolos como veremos a continuación y cabe destacar que hay que prestar atención a no confundir == con = porque implican distintas cosas.

El operador || se obtiene en la mayoría de los teclados pulsando ALT GR + 1, es decir, la tecla ALT GR y el número 1 simultáneamente. Los operadores && y || se llaman operadores en cortocircuito porque si no se cumple la condición de un término no se evalúa el resto de la operación. Por ejemplo: (a == b && c != d && h >= k) tiene tres evaluaciones: la primera comprueba si la variable a es igual a b. Si no se cumple esta condición, el resultado de la expresión es falso y no se evalúan las otras dos condiciones posteriores. En un caso como ( a < b || c != d || h <= k) se evalúa si a es menor que b. Si se cumple esta condición el resultado de la expresión es verdadero y no se evalúan las otras dos condiciones posteriores. El operador ! recomendamos no usarlo hasta que se tenga una cierta destreza en programación. Una expresión como (!esVisible) devuelve false si (esVisible == true), o true si (esVisible == false). En general existen expresiones equivalentes que permiten evitar el uso de este operador cuando se desea. ORDEN DE PRIORIDAD, PRELACIÓN O PRECEDENCIA Los operadores lógicos y matemáticos tienen un orden de prioridad o precedencia. Este es un esquema general que indica el orden en que deben evaluarse en la 
mayoría de los lenguajes de programación:











Pharrell Williams - Happy (Official Music Video)


SIMBOLOGIA DE DIAGRAMA DE FLUJO


SímboloSímbolo Nombre
(Alias)
Símbolo Descripción
Proceso / Símbolos Operación
proceso de símboloProceso
Mostrar un proceso o paso de acción. Este es el símbolo más común en los diagramas de flujo de procesos y mapas de procesos de negocio.
predefinidos símbolo de procesoProceso predefinido
(Subrutina)
Un símbolo predefinidos proceso es un marcador de otra etapa del proceso o una serie de medidas de flujo del proceso que están formalmente definidos en otros lugares. Esta forma normalmente representa subprocesos (o subrutinas en diagramas de flujo de programación). Si el sub-proceso que se considera "conocida", pero en realidad no se define en un procedimiento de proceso, instrucciones de trabajo, o algún otro proceso de diagrama de flujo o la documentación, entonces es mejor no utilizar este símbolo, ya que implica un proceso definido formalmente.
símbolo de proceso alternativoSuplente Proceso
Como su nombre lo sugiere la forma, este símbolo de diagrama de flujo se utiliza cuando el paso de flujo del proceso es una alternativa a la etapa del proceso normal. líneas de flujo en un paso de flujo de procesos alternativos son generalmente discontinuas.
retraso símboloRetrasoEl símbolo de diagrama de flujo de retardo representa un período de espera que es parte de un proceso. Hay un atraso de las formas comunes de mapeo de procesos.
preparación símboloPreparación
Como dice el nombre, cualquier paso del proceso que es un proceso de preparación de caudal, como una puesta a punto la operación.
manual de símbolo de la operaciónManual de Operación
Manual de las formas de diagrama de flujo de operaciones que se muestran los pasos del proceso no están automatizados. En los diagramas de flujo de proceso de datos, esta forma de flujo de datos indica una operación de bucle junto con un símbolo de límite de bucle (que no es compatible con Microsoft Office, sino un símbolo Manual de Operación de girar 180 ° hará el truco.)
y Control de ramificación de los símbolos de flujo
conector de flechaFlow Line
(Flecha, conector)
Conectores de flujo línea de mostrar la dirección que el proceso de los flujos.
terminador símboloTerminator
(Terminal Punto de óvalo)
Terminators mostrar los puntos de inicio y fin de un proceso. Cuando se utiliza como un símbolo en Inicio, terminadores representan un grupo de disparo, que establece el flujo de proceso en marcha.
símbolo de la decisiónDecisión
Indica una pregunta o una sucursal en el flujo del proceso. Por lo general, una forma de diagrama de flujo Decisión se utiliza cuando hay dos opciones (Sí / No, No / No-Go, etc)
conector de nodoConector (Inspección)Diagrama de flujo: En los diagramas de flujo, este símbolo suele ser pequeño y se utiliza como un conector para mostrar un aumento de un punto en el flujo de proceso a otro. Los conectores son usualmente marcadas con letras mayúsculas (A, B, AA) para mostrar los puntos de coincidencia salto. Son útiles para evitar el flujo de las líneas que se cruzan otras formas y líneas de flujo. Ellos también son útiles para el salto y de un sub-procesos definidos en la zona para que el diagrama de flujo principal.
Proceso de Asignación: En los mapas de procesos, este símbolo es de tamaño completo y muestra un punto de inspección en el flujo del proceso.

[Sólo para confundir más las cosas, algunas personas utilizan un círculo para indicar una operación y un cuadrado para indicar una inspección. Es por eso que es importante incluir una clave de símbolo en el diagrama de flujo.]
conector fuera de página nodoConector fuera de página
Fuera de la página Conector muestra la continuación de un organigrama de proceso en otra página. Cuando se utilizan en combinación con conectores, lo mejor es para diferenciar las etiquetas, por ejemplo, números de uso para Off-Page Conectores y letras mayúsculas para conectores.En la práctica, la mayoría de los diagramas de flujo sólo tiene que utilizar la forma de conectar dos referencias en la página y fuera de la página.
símbolo de almacenamientoCombinación
(Almacenamiento)
Diagrama de flujo: Muestra la fusión de varios procesos y la información en una sola.
Proceso de asignación: por lo general indica que el almacenamiento de materias primas.
almacenamiento o extracto de símboloExtracto (medición)
Diagrama de flujo: Aparece cuando un proceso se divide en caminos paralelos. También indica una frecuencia de medición, con "M" mayúscula dentro del símbolo. 
Proceso de asignación: por lo general indica que el almacenamiento de productos terminados.
lógica o símboloO
La muestra o símbolo lógico cuando un proceso se aparta - por lo general durante más de dos ramas. Cuando se utiliza este símbolo, es importante etiquetar las líneas de flujo saliente para indicar los criterios a seguir cada rama.
sumando símbolo de conexionesEn resumen la salida
La lógica Resumiendo forma de diagrama de flujo de conexiones se muestra cuando convergen varias ramas en un solo proceso. El símbolo de combinación es más común para este uso, sin embargo.Este símbolo y el símbolo O son realmente más relevantes en el procesamiento de datos de diagramas de flujo que en los diagramas de flujo del proceso.
Entrada y símbolos de salida
datos o de entrada / salida de símboloDatos
(E / S)
La forma de diagrama de flujo de datos indica que las entradas y salidas de un proceso. Como tal, la forma es más a menudo se conoce como E / S que forma una forma de datos.
signaturaDocumento
Muy explica por sí mismo - el símbolo de diagrama de flujo de documentos es para una fase del proceso que produce un documento.
multi-signaturaMulti-DocumentoIgual que el documento, excepto, bueno, varios documentos. Esta forma no es tan de uso general como la forma de diagrama de flujo de documentos, incluso cuando están implicados varios documentos.
indicación de símbolosMostrar
Indica una etapa del proceso donde la información se muestra a una persona (por ejemplo, los usuarios de PC, operador de la máquina).
manual de símbolos de entradaManual de Entrada
Manual de las formas de diagrama de flujo de entrada muestra los pasos del proceso donde se le pide al operador / usuario para obtener información que deben introducir manualmente en un sistema.
tarjeta de símboloTarjeta
Esta es la compañía de las formas de diagrama de flujo de cinta perforada. Esta forma se utiliza raramente.
símbolo de cinta perforadaPerforadas de cintaSi eres muy bueno en todos los estiramientos de la vida de una máquina, usted todavía puede tener el uso del símbolo de cintas perforadas - se usa para la entrada en ordenadores antiguos y máquinas CNC.
Archivo y Almacenamiento de símbolos de información
símbolo de los datos almacenadosLos datos almacenados
Un general de almacenamiento de datos forma de diagrama de flujo utilizado para cualquier etapa del proceso que almacena los datos (a diferencia de las formas más específicas a seguir al lado de este cuadro).
base de datos de símboloDisco magnético (base de datos)
El símbolo más universalmente reconocibles para una ubicación de almacenamiento de datos, esta forma de diagrama de flujo representa una base de datos.
acceso directo símbolo de almacenamientoAlmacenamiento de acceso directo
Direct Access Storage es una manera elegante de decir unidad de disco duro.
símbolo de almacenamiento internoDe almacenamiento interno
Se utiliza en los diagramas de flujo de programación en el sentido de la información almacenada en la memoria, en lugar de en un archivo.
de almacenamiento de acceso secuencialDe almacenamiento de acceso secuencial
(Cinta magnética)
A pesar de que parece una "Q", el símbolo se supone que se vea como un rollo de cinta.
Símbolos de datos de procesamiento
cotejarCotejar
La forma de diagrama de flujo Intercalar indica una fase del proceso que requiere la organización de los datos, información o materiales de acuerdo a un formato estándar o el arreglo.
tipo símboloOrdenarIndica la clasificación de datos, información, materiales en un orden pre-definido.

PARADIGMAS DE PROGRAMACION


  1. Programación Imperativa:La programación imperativa, en contraposición a la programación declarativa es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea.La implementación de hardware de la mayoría de computadores es imperativa; prácticamente todo el hardware de los computadores está diseñado para ejecutar código de máquina, que es nativo al computador, escrito en una forma imperativa. Esto se debe a que el hardware de los computadores implementa el paradigma de las Máquinas de Turing. Desde esta perspectiva de bajo nivel, el estilo del programa está definido por los contenidos de la memoria, y las sentencias son instrucciones en el lenguaje de máquina nativo del computador (por ejemplo el lenguaje ensamblador)
  2. Programación lógica :
    La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional. 
    La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de programación dentro de la programación declarativa son: programación funcional, programación basada en restricciones, programas DSL (de dominio específico) e híbridos. La programación lógica gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático.
  3. Programación Funcional:En ciencias de la computación, la programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. Enfatiza la aplicación de funciones, en contraste con el estilo de programación imperativa, que enfatiza los cambios de estado. La programación funcional tiene sus raices en el cálculo lambda, un sistema formal desarrollado en los 1930s para investigar la definición de función, la aplicación de las funciones y la recursión. Muchos lenguajes de programación funcionales pueden ser vistos como elaboraciones del cálculo lambda. 
    En la práctica, la diferencia entre una función matemática y la noción de una "función" utilizada en la programación imperativa es que las funciones imperativas pueden tener efectos secundarios, al cambiar el valor de calculos realizados previamente. Por esta razón carecen de transparencia referencial, es decir, la misma expresión lingüística puede resultar en valores diferentes en diferentes momentos dependiendo del estado del programa siendo ejecutado. Con código funcional, en contraste, el valor generado por una función depende exclusivamente de los argumentos alimentados a la función. Al eliminar los efectos secundarios se puede entender y predecir el comportamiento de un programa mucho más fácilmente, y esta es una de las principales motivaciones para utilizar la programación funcional. 
  4. Programación declarativa:La Programación Declarativa, es un paradigma de programación que está basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan sólo se le indica a la computadora que es lo que se desea obtener o que es lo que se está buscando). No existen asignaciones destructivas, y las variables son utilizadas con Transparencia referencial
  5. Programación estructurada :
    La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN). 
    Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.


  6. Programación dirigida por eventos 
    La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen. 
    Para entender la programación dirigida por eventos, podemos oponerla a lo que no es: mientras en la programación secuencial (o estructurada) es el programador el que define cuál va a ser el flujo del programa, en la programación dirigida por eventos será el propio usuario —o lo que sea que esté accionando el programa— el que dirija el flujo del programa. Aunque en la programación secuencial puede haber intervención de un agente externo al programa, estas intervenciones ocurrirán cuando el programador lo haya determinado, y no en cualquier momento como puede ser en el caso de la
    programación dirigida por eventos.
  7. Programación modular :
    La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable. 
     Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver. 
     Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down). 


  8. Programación orientada a objetos :
    La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

  9. Programación con restricciones :
    La Programación con restricciones es un paradigma de la programación en informática, donde las relaciones entre las variables son expresadas en términos de restricciones (ecuaciones). Actualmente es usada como una tecnología de software para la descripción y resolución de problemas combinatorios particularmente difíciles, especialmente en las áreas de planificación y programación de tareas (calendarización). 
    Este paradigma representa uno de los desarrollos más fascinantes en los lenguajes de programación desde 1990 y no es sorprendente que recientemente haya sido identificada por la ACM (Asociación de Maquinaria Computacional) como una dirección estratégica en la investigación en computación. 
    Se trata de un paradigma de programación basado en la especificación de un conjunto de restricciones, las cuales deben ser satisfechas por cualquier solución del problema planteado, en lugar de especificar los pasos para obtener dicha solución.
  10. Programación a nivel funcional :
     La programación a nivel funcional es unos de los dos paradigmas contrastantes identificados por John Backus en su trabajo sobre los Programas como objetos matemáticos, siendo el otro la programación a nivel de valores. 
     En su discurso de aceptación del Premio Turing en 1977, Backus describió lo que considera como la necesidad de un cambio a una filosofía diferente en el diseño de lenguajes de programación: 
     "Pareciera existir un problema en el diseño de los lenguajes de programación. Cada nuevo lenguaje incorpora, luego de algo de limpieza, todas las características de los lenguajes anteriores más algunas otras. [...] Cada nuevo lenguaje presenta nuevas características de moda... pero el hecho es que pocos lenguajes hacen que la tarea de programar sea más económica, o más segura como para justificar el costo de producirlo y aprender a utilizarlo." 
    El lenguaje de programación FP fue el primer lenguaje diseñado específicamente para dar soporte al estilo de programación a nivel funcional. 


  11. Programación a nivel de valores 
    La programación a nivel de valores es unos de los dos paradigmas contrastantes identificados por John Backus en su trabajo sobre los Programas como objetos matemáticos, siendo el otro la programación a nivel funcional. El término inicialmente utilizado por Backus fue el de programación a nivel de objetos, pero en la actualidad ese término traería confusión con la programación orientada a objetos. 
    Los programas a nivel de valores describen como combinar diferentes valores (por ejemplo, números, caracteres, etc.) para formar nuevos valores hasta obtener el resultado final. Los nuevos valores se obtienen como resultado de la aplicación de operaciones que transforman valores en otros valores, como por ejemplo, la suma, la concatenación, la inversión de matrices, etc. 
    Los lenguajes que siguen el estilo de von Neumann son de nivel de valores: las expresiones a la derecha de una asignación tienen por objeto la creación del nuevo valor a asignar.

  12. Programación orientada a componentes 
    La programación orientada a componentes (que también es llamada basada en componentes) es una rama de la ingeniería del software, con énfasis en la descomposición de sistemas ya conformados en componentes funcionales o lógicos con interfaces bien definidas usadas para la comunicación entre componentes. 
    Se considera que el nivel de abstracción de los componentes es más alto que el de los objetos y por lo tanto no comparten un estado y se comunican intercambiando mensajes
    que contienen datos.

  13. Programación Orientada a Aspectos:
    La Programación Orientada a Aspectos (POA) es un paradigma de programación relativamente reciente cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de incumbencias. Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicación en entidades bien definidas, eliminando las dependencias entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersión del código y las implementaciones resultan más comprensibles, adaptables y reusables. Varias tecnologías con nombres diferentes se encaminan a la consecución de los mismos objetivos y así, el término POA es usado para referirse a varias tecnologías relacionadas como los métodos adaptativos, los filtros de composición, la programación orientada a sujetos o la separación multidimensional de competencias.