31 mar. 2014

 Dropbox es uno de los servicios de alojamiento en la nube más conocido de la Red. Sin embargo, pese a su utilidad, no es el mejor modo de compartir ciertos archivos, en concreto aquellos con copyright. Esto se debe al sistema del servicio para detectarlos, cuyo funcionamiento explicamos a continuación.
Si bien el disco duro virtual sí puede ser utilizado para almacenar este tipo de contenidos, el sistema que emplea detecta cuándo éstos se comparten entre usuarios e impide esta posibilidad. Según explica el artículo, el sistema de Dropbox básicamente compara el hash de los archivos que los usuarios almacenan en sus cuentas con los registrados en una base de datos.

El servicio no rastrea cada contenido de sus usuarios

dropboxGracias a este identificador, el cual es único para cada archivo, el sistema sabe si el contenido cuenta con derechos de autor. Sin embargo, esto no implica que los responsables de Dropbox espíen todos los contenidos que almacenan sus usuarios. Tan solo le basta saber de este código y si su propietario intenta compartirlo con otro. En tal caso el sistema bloquea automáticamente la acción.
Asimismo, los titulares de derechos de autor rastrean en la Red posibles contenidos con copyright que se comparten mediante el disco duro virtual y notifican a Dropbox su existencia. Tras ello su equipo verifica el archivo en cuestión e incluye su hash en su base de datos, de modo que todos aquellos archivos en adelante que incluyan el identificador en cuestión son bloqueados a la hora de su compartición.
Así pues, queda claro que pese a este protocolo, Dropbox no rastrea de forma específica los archivos en sus servidores, algo que por otro lado requeriría de un trabajo extraordinario. El sistema empleado es bastante sencillo a la par que efectivo. No obstante, también abre la puerta a que los usuarios puedan evitarlo con pequeñas modificaciones en los archivos que propicien en el proceso de cifrado un hash distinto al incluido en la lista negra de Dropbox
Fuente: Adslzone
En la anterior publicación sobre Hiren's Boot profundizamos en un abanico de programas de uso muy específico relacionados de forma directa con la gestión de particiones y el arranque, tras indagar de nuevo en el set de software de mantenimiento por excelencia. Hiren's Boot, hoy procederemos a efectuar un análisis al mismo nivel acerca del siguiente paquete de utilidades albergado en la opción Dos Programs del mismo.

Backup Tools es un completo conjunto de aplicaciones que como su propio nombre indica están destinadas al implemento y recuperación de copias de seguridad del sistema.


Esta herramienta posicionada en el slot número 2 de nuestro menú de Dos Programs incorpora las siguientes aplicaciónes:

Partition Saving:


Un potente software de clonación para sistemas operativos de Linux, Microsoft Windows y DOS, que ofrece servicios de backup del sistema bastante estables, mas no obstante, sus capacidades no se acaban ahí, Partition Saving puede realizar de forma íntegra una corrección exhaustiva del conjunto paramétrico que constituye el sistema encargado del arranque del SO, así como prestar a configuración el mismo lo que lo convierte directamente en un programa capaz de solventar una situación en la que normalmente nuestro sistema quedaría inutilizado, como ademas acercarnos la posibilidad de realizar una recuperación prevista de los datos si el error no fuere causa directa de un fallo en el gestor de arranque. Originalmente sustantivado con el nombre Savepart pero que debido a conflictos directos con un Sistema Operativo de la rama DOS, se vieron obligados a modificar, Partition Saving nos deja con buen sabor de boca nada más descubrir este paquete de aplicaciones.






Seagate DiscWizard (Acronis TrueImage):


El famoso creador de copias de seguridad de uso doméstico de Acronis no podía faltar en un set de herramientas de copias de seguridad, Cabe destacar la facil y cargada de usabilidad versión que apareció el pasado 2011 que permitía estar a un mísero click de la recuperación de cualquier fichero, pero es aún más interesante el hecho de que esto te proporcione la posibilidad de crear Backups con un ejecutable incorporado fácilmente usable en dispositivos de almacenamiento externo, nunca mover tus copias de seguridad había sido  tan descaradamente fácil hasta su aparición.




CopyWipe:


Se trata de una aplicación para el borrado de discos en plataformas Windows y DOS con la capacidad de eliminarlos permanentemente y por supuesto, como su propio nombre da a entender, se usa para copiar datos, en éste caso, datos de partición a partición, lo cual es útil para generar Backups de aprticiones de forma sencilla, al igual que muchos otros programas de hirens boot se ejecutan desde un Sistema Operativo iniciado, CopyWipe puede ejecutarse con el SO vivito y coleando y sin necesidad alguna de reiniciar, algo parecido a lo que pasa con Partition Wizzard otra herramienta de Hiren's Boot muy útil y eficiente de particionado, obviamente cabe recordar que no es para nada aconsejable trabajar con las particiones activas durante la ejecución del sistema, desde linceus avisamos de éste detalle y de que el el castigo por descuidar ese protocolo es una hecatombe funcional que deje nuestro sistema en total desuso, muchísima precaución, eliminación, redimensionado y copia de particione sy sus datos son unas de sus bondades.




COPYR.DMA Build013:

Esta joya nos permitirá hace rcopias de seguridad funcionales en aquellos discos duros que tengan sectores defectuosos, más adelante en esta pequeña saga de entradas se redactará más acerca de éste problema y de cómo detectar algunos de ellos de una forma certera así como de su reparación.
Una herramienta útil y de uso intuitivo, nada más que añadir salvo que para quienes conocemos bien los "Bad Sectors" esta aplicación es una bendición que hace muy buen honor al concepto mismo de utilidad dentro de un paquete de utilidades.





Drive Snapshot:

Potente herramienta para la creación de imágenes de sistema para su posterior restauración.





Image for DOS:

Como su propio nombre indica crea Snapshots para sistemas DOS, puedes restaurar validar y copiar éstas y almacenarlas en dispositivos a tu elección.





Ghost 4 Linux:

Un Software muy parecido al ya mencionado gparted de gnome, incorporado en "Partition Tool" pero enfocado a la creación de Backups, se ha llegado a encontrar entre los software de uso libre más fiables para éste propósito.





Clonezilla:

El famoso software libre dedicado a la restauración del sistema ante grandes desastres, una aplicación que incorpora un sistema de clonación y particionado capaz de trabajar en 40 nodos con total simultaneidad, es quizás el primer programa que se nos viene a la cabeza al hablar de Backups, como podemos observar la mayoría de éstos programas cuentan con una interfaz idéntica.





Nota#:
Dependiendo de la versión de Hiren's Bott que estés utilizando, algunas aplicaciones son susceptibles a no funcionar con normalidad, por l oque puede tratarse de una incompatibilidad de ésa versión con tu sistema, lo ideal es usar la última versión pero si ésto no da resultado ante éste problema, quizás lo haga cambiar de versión.


Hasta aquí la entrada de hoy, volveremos pronto con más acerca de la herramienta software para el mantenimiento de equipos más popular.






29 mar. 2014

Bienvenido de nuevo a otra entrada acerca de paradigmas de programación, hoy, desde Linceus, traemos con nosotros información suficiente para profundizar en el siguiente de ellos; programación restringida o basada en restricciones.

Éste particular protocolado de procedimientos restrictivos se basa en la especificación de un conjunto de restricciones que sustituyen los propios elementos de la programación lógica por las mismas con el objetivo de mejorar objetivamente el resultado final, dicho de otra forma, las relaciones que unen variables son sustituidas por ecuaciones específicas llamadas restricciones.

El objetivo del desarrollador que basa la construcción de código en ésta filosofía debe de satisfacer el máximo de restricciones simultáneamente, así pues un programa basado en restricciones que trabaje sobre una serie de valores fijos debe de aplicar sólo dichos valores a las variables para la resolución del código.

Hasta aquí hemos descrito todo lo que conforma la esencia procedimental del paradigma, pero, ¿cual es el objetivo y/o ventajas reales del uso de la programación con restricciones? Sin duda parece algo difícil poder sacar partido a un sistema que basa sus principios en la privación, pero, nada queda más lejos de la realidad
adquieren gran peso en cuanto a algunos dominios presentes en la programación lógica se refiere siendo más natural su resolución restrictiva que la metodología lógica, algunos de esos dominios son:

  1. Lineales, donde sólo se describen y analizan funciones lineales.
  2. Booleanos, donde solo existen restricciones del tipo verdadero/falso.
  3. Finitos, donde las restricciones son definidas en conjuntos finitos.
  4. Mixtos, los cuales involucran dos o más de los anteriores.
  5. Dominios en variables enteras y racionales.


AVISPA (Portal dedicado a la programación con restricciones):















Los lenguajes centrados en éste paradigma suelen tratarse de una mera extensión de otro lenguaje ya existente. El primer lenguaje utilizado a tal efecto fue el rematadamente conocido lenguaje, ligado intimamente a la programación lógica, estamos hablando de Prolog. A culla ampliación se le apodo en sus inicios Programación Lógica con Restricciones. Ambos comparten características como las conocidas variables lógicas (una vez que una variable es asignada a un valor, no puede ser cambiado), o el backtracking.

Lenguajes orientados al paradigma:
Straming didáctico acerca de la programación con restricciones:


La programación lineal usa una serie de funciones lineales con sistemas de ecuaciones lineales como restricciones para su desarrollo, un claro ejemplo lo encontramos en uno de nuestros libros recomendados de hoy.

Libros recomendados:

28 mar. 2014

En ésta sección del programa Salvados transmitido en la SEXTA se intenta concienciar a las masas sobre el seguro uso de datos personales y la asunción de que un teléfono móvil hoy en día también es una computadora, para ello, han contado con un especialista en seguridad informática que desmenuza en sencillos ejemplos cuan expuesta está nuestra información personal ante posibles ataques de espionaje y suplantación de identidad entre otros, si deseas hacer un pequeño ejercicio, descarga un Sniffer y acuerda éste fácil experimento con alguien de confianza, algo que también puedes hacer es desembolsar 15 euros por una aplicación pero esto ya son palabras mayores.


Recopilación de Sniffers (Entrada anterior de Linceus): 




27 mar. 2014

  


Los aficionados al terror que todavía no tengan en su poder Dead Space podrán adquirir de forma completamente gratuita este clásico de Visceral Games hasta el próximo 8 de mayo. 

Esta es una oferta exclusiva de la plataforma online Origin, en la que el juego podría comprarse hasta la fecha al precio de 7,95 euros. Precio al que volverá a situarse Dead Space una vez concluya esta promoción especial. 

Tanto Dead Space 2 como la tercera entrega de esta serie de terror se pueden comprar también al precio de 9,95 en dicha tienda online.


Fuente: 3djuegos

25 mar. 2014


Dropbox y Box eran sin duda hasta ayer dos de las estrellas del emergente sector del almacenamiento de datos en la nube. La primera había recibido hasta el día de hoy cerca de $607 millones de inversión del venture capital y la segunda unos $414 millones. Ambas compañías eran un caso de éxito y ambas compañías estaban preparando su inminente salida a Bolsa.
Hablo en pasado porque el panorama cambio radicalmente hace pocos días cuando Google decidió reventar el sector y reducir drásticamente los precios de Google Drive el servicio de Google que compite directamente con Drobox y Box.
Así es como queda la comparativa de tarifas tras la reducción de precio de Google:
precios google drive dropbox boxPara que os hagáis una idea de como queda la diferencia de precios, Dropbox ofrece 500 GB de almacenamiento por $42$499, Google deja 1TB de almacenamiento en $9,99, es decir el doble de almacenamiento que DropBox pero con un precio un 76% 98% inferior.
Si los usuarios de este tipo de servicios son mínimamente sensibles al precio, posiblemente los inversores en Dropbox y Box ya pueden ir despidiéndose se su salida a Bolsa e incluso ya pueden ir provisionando los cerca de $1.000 millones invertidos en Dropbox y Box, salvo que todo sea un movimiento de Google para poder adquirirlas a un precio ventajoso.


24 mar. 2014

He aquí la parte más usada de Hiren's Boot debido a que las herramientas que tienen que ver con Hadrware y sistemas de auxilio a situaciones más frecuentes se hallan aquí, una vez seleccionemos la opción Dos Programs desplegaremos un amplio abanico de utilidades de mantenimiento bastante interesantes.



A partir de aquí procederemos a la explicación detallada de los usos de cada aplicación:

En la Subsección Parttion Tools podemos encontrar todo lo necesario para la copia gestión y modificación óptima de nuestras particiones de almacenamiento en disco, ¿Se te ha ocultado una partición?¿Se te ha desvinculado una letra de partición?¿Tus archivos no tienen copias de seguridad y necesitas crear un nuevo espacio para ellos?, Está claro que es de lo más común que hallas estado alguna vez en alguno de éstos casos, con las herramientas de Partition Tools podrás solventar éstos problemas y más.

Empecemos por Gparted, El editor de particiones por excelencia de GNOME, con él podrás modificar, redimensionar, cambiar denominación y por supuesto crear particiones con distintos sistemas de archivos, la gracia de éste sistema integrado en la conjunción de Hiren's Boot es que además puedes efectuar una emulación de compatibilidades e incorpora también Clonecilla.



En la ranura 2 nos encontraremos una potente herramienta que, exclusivamente redimensiona particiones se trata de The Partition Resizer tras un aviso sobre sus riesgos obvios podrás ejecutarlo, una apuesta más que interesante si queremos únicamente redimensionar particiones.


En el Nº 3 se encuentra Ranish Partition Manager el cual es otra de esas joyas de uso múltiple (Particionado, clonación, Gestión de arranque [MBR]...) que es capaz de ejecutarse bajo MS-DOS, PC-DOS, DR-DOS y FreeDOS, otro detalle importante, es que se pueden hacer infinidad de cambios en el Disco antes de aplicarlos, si ninguna restricción.



He aquí su interfaz:


Bamboleándose hasta el número cuatro encontramos Smart FDISK, que no os engañe la expresión, éste software es capaz de crear particiones lógicas en el equipo con facilidad precisión y fiabilidad.




El siguiente es Special Fdisk, sobran las palabras:





Al igual que la versión extendida de Fdisk que se encuentra en el 6 y la versión Super en el 7.

Por último profundizamos en Partition Table Editor, el cual es una vía rápida de modificación en el particionado de nuestro disco, algo para quienes tienen algo más de prisa, su interfaz muestra en una tabla los valores de cada partición:




Bienvenidos de nuevo a sección de paradigmas, una sección donde ya venimos acumulando nada mas ni nada menos que 5 entradas, pues bíen, vamos a por la sexta, hoy el tema principal gira en torno al concepto de predicado, el cual como concepto en sí mismo tiene varias acepciones, una de ellas y gracias a la cual podemos argumentar esta entrada, está ligada de forma directa con los fundamentos de la programación lógica, que gira en torno a éste elemento, como la programación funcional lo hacia entorno la idea de función.



Pero, ¿De qué estamos hablando exactamente cuando nos referimos al predicado?, para entender éste concepto hechamos mano de una de sus acepciones mas populares, donde el mísmo recoje en un grupo sintáctico el equivalente a un verbo o acción en una frase, por ejemplo:


"Juan sabe programar en java", si entendemos que el predicado de ésta oración es: "sabe programar en java" y éste se asocia a la variable Juan, hemos recogido la información del predicado como un factor determinante en operaciones que requieran preguntar si sabe o no "programar en java", así como operaciones lógicas con la condición "si sabe programar" , "si sabe programar en java" (Siendo ésta más específica) o "si no sabe programar en java", si ahora añadimos las variables Jose "Jose sabe programar en java" y Daniel "Daniel no sabe programar en java", en una operación:

Pseudocódigo:
Imprimir("Saben programar en java" ) +variable+" Nombre") si predicado = "sabe programar en java" 
Salida: Saben programar en java Jose y Juan


Si formulásemos la operación condicional opuesta se nos devolvería Daniel, en la programación lógica,
las condicionales tienen una gran relevancia, puesto que el principio básico de la misma es responder incógnitas, Usando la lógica de primer orden, en la mayoría de casos.

Programación lógica de BD en Java (Con Prolog):


Tutoriales de Prolog (Primera clase):





Libros Recomendados: Programación lógica, Tomo 1, Construcción de programas


Nota # Lógica del primer orden:
Rama de las matemáticas engloba diferentes tipos de relaciones binarias que capturan la noción intuitiva del orden matemático.

En conclusión, es una propuesta más que interesante para los que ya conozcan éstos campos, como materia didáctica y para enfocar desde un punto de vista cercano de forma natural al razonamiento humano más que a la forma de proceder de la máquina.


23 mar. 2014

Se trata nada mas y nada menos de un sistema operativo con características básicas almacenado en Hiren's Boot, éste puede ser útil para realizar cambios que requieran la entrada a un sistema operativo, si ésta esta denegada, causal directo de problemas tan comunes como los que provienen del hardware (Disco Duro) o los que tienen que ver con el arranque del mismo, la obstrucción, y en ambos casos, la ausencia de la posibilidad de entrar en modo seguro al sistema.

Sería no obstante, bajo un punto de vista objetivo, una verdadera desgracia que un software de conjunción de software de mantenimiento, valga la redundancia, no incorporase dicha herramienta, al fin de al cabo, a todos los que usamos nuestro PC con regularidad y llevamos años haciéndolo, nos han acontecido esta clase de conflictos durante nuestra experiencia, sin duda la herramienta que establece el eje central de todo Hiren's Boot, ya que desde ella, también podemos acceder a todas y usar casi todas las utilidades de Hiren's Boot, como lo haríamos desde nuestro Sistema Operativo normalmente.


En éste vídeo se muestra un adelanto de como podemos usar las utilidades convencionales de Hiren's Boot desde nuestro Mini Windows XP. (Como podemos obserbar el uso de las aplicaciones básicas de un SO funcionan de manera fluida)




En la siguiente entrada hablaremos más en "Dos Programs", la mayor conglomeración de herramientas de éste software y profundizaremos en algunos de ellos.

Hiren's Boot es una completísima utilidad de mantenimiento y reparaión de equipos que consta de una conjunción selecta de aplicaciones funcionales para este propósito contenidas en una sola aplicación que está pensada para arrancar directamente desde un CD/DVD o desde un dispositivo de almacenamiento USB (booteable).




Algunas de éstas aplicaciones son:
  • Antivirus
  • Mini XP (con conexión a red por cable e inalámbrica)
  • Navegadores
  • Herramientas de test
  • Herramientas de sistemas de información
  • Software de gestión de archivos
  • Programas de almacenamiento
  • Software BIOS / CMOS
  • Programas de limpieza
  • Herramientas de red
  • Aplicaciones relacionadas con el uso de controladores
  • Editores
  • Herramientas de ajuste del sistema
  • Herramientas de gestión de los sistemas de archivos
  • Herramientas para el disco duro
  • Software de mantenimiento y análisis MBR (Master Boot Record)
  • Utilidades MS DOS
  • Funciones para la optimización del rendimiento
  • Programas de particionado
  • Monitoreo y mantenimiento del Procesador
  • Recuperación de datos
  • Mantenimiento del Registro
  • Software de control a distancia
  • Utilidades de seguridad informática (Encriptadores)
  • Software para la integridad del arranque de sistema
  • Gestores de copias de seguridad
  • La lista completa en el sitio web de Hiren

En ésta primera entrada comenzaremos enlazando un par de videotutoriales acerca de cómo podemos volcar nuestro Hiren's Boot en un dispositivo CD o USB

Volcado CD:


Vocado USB:








20 mar. 2014

Finiquitadas los principales paradigmas de programación imperativos, va siendo hora de adentrarnos en un campo totalmente distinto que ofrece otra serie de protocolos y filosofías de actuación a la hora de programar, la entrada de hoy apunta a la programación funcional, la cual basa sus principios en la resolución de operaciones aritméticas.


A diferencia de otros paradigmas, la programación funcional elige prescindir de datos de estado o mutables para centrarse en la resolución del problema mediante mecanismos puramente matemáticos basados en funciones, esto choca principalmente con las bases de los paradigmas imperativos, ya que éstos últimos se basan en la aplicación de dichos estados y de sus cambios para la automatización a la hora de resolver una operación.




Los intrínsecos mecanismos de la programación funcional arraigan directamente del revolucionario sistema de funciones recursivas lambda, ésta forma de cálculo fue usada por Alonzo Church y Stephen Kleene para resolver el mítico Entscheidungsproblem (Problema de decisión) un problema lógico de dictaminación acerca de teoremas, hoy día y tal y como describimos en la entrada sobre Java 8, lambda tiene múltiples aplicaciones que apuntan a los procedimientos de la programación funcional.


En definitiva éste paradigma compite con la principal debilidad de la programación imperativa, y es que salvo usando funciones, como concepto más allá del plano matemático, se evita con creces el famoso cúmulo de "efectos secundarios" referidos al hecho de que cambiar valores en manos de imperativa supone el cambio de los resultados incluso tras la realización del procedimiento, por lo que el uso de funciones aporta transparencia referencial al software en tiempo de ejecución, asegurando valores correctamente establecidos y sin cambios durante el transcurso del mismo.

No obstante, más por el costoso uso que por su alcance operativo, éste paradigma está popularmente etiquetado dentro del campo académico, no soliendo ser el predilecto de recomendación para el desarrollo comercial de aplicaciones, no siendo éste el caso de aplicaciones como Scheme, Haskell, Erlang, Objective Caml o Rust, Con excelentes resultados en aplicación industrial.

La programación funcional encuentra hueco en la industria gracias también a lenguajes de dominio específico como pueden ser Mathematica (usado en matemáticas simbólicas), R (estadística), J y K (finanzas), F# en Microsoft.NET o XSLT (XML). 

Lenguajes tan usados como Lex/Yacc y SQL, usan algoritmos propios de la programación funcional, por ejemplo, principalmente al tratar valores mutables. Incluso podemos considerar parte del pack a las hojas de cálculo.

En definitiva, en aplicaciones matemáticas, industriales, académicas, o en casos específicos como SGBDs, ésta forma de proceder es útil, sobre todo, si lo que se desea es escribir código aritmético sin necesidad de enfrentarse cara a cara con bajo nivel, evitando la mutación del estado de un resultado, e incluso, como fin autodidacta, no olvidemos que, a fin de cuentas algunos de los lenguajes qu precisan de parte de éste paradigma, son realmente útiles como es el caso de SQL.



Características principales:

Funciones de primera clase y de orden superior:

Funciones que, en definitiva, son subceptibles de poder implementar otras funciones, estableciéndolas de forma directa com oargumentos y/o devolverlas como resultado a otra.


Funciones puras

Carecen de los "efectos secundarios" propios de imperativa, permitiendo además mejorar el rendimiento del código, por ejemplo, elimina valores en desuso, aplica transparencia referencial (definida anteriormente), independencia de datos o uso de "poda" eliminando completamente efectos contraproducentes para la ejecución óptima del código.

Recursividad

Antes hemos mencionado la recursividad como una de las características de ésta filosofía procedimental, pero, ¿Qué es exactamente la recursividad?
Fácil, las funciones recursivas tienen la potestad de invocarse a sí mismas, lo cual supone condicionar la repetición de una función creando así patrones sencillos que lograría el efecto de un bucle.


Evaluación estricta de subtérminos

Si un subtérmino falla, el término no se aprovará

Pre-asunción de los tipos primitivos

Implementan la declaración de los mismos sin necesidad de que el programador lo haga tras su primera declaración

Adaptación multilenguaje

Puede aplicarse en múltiples lenguajes, e incluso en algunos que no han sido orientados de forma directa a ésta metodología

Lenguajes aplicables:

Lenguajes funcionales puros: Haskell y Miranda
Lenguajes funcionales híbridos: SAP, Scala, Lisp,Ocaml, Clojure, Scheme y Standard ML


Libros recomendados:

Introducción a la Programación funcional usando Haskell

19 mar. 2014

La última actualización de lo que, a día de hoy, es uno de los más importantes motores de desarrollo y diseño 3D, Unity 5, se expuso ayer en Game Developers Conference ( la reunión anual más grande de desarrolladores profesionales de videojuegos) en San Francisco. Unity trae grandes cambios en materia de audio, utilidades de iluminación y en la edición de sombras, además de añadir un editor de 64 bits entre otras mejoras.

Uno de los cambios más significativos presentados fue la incorporación de Unity Cloud, una plataforma de promoción de juegos móviles que permite a duna desarrolladora promocionar títulos entre sí, e incluso, anunciarse en proyectos de otros estudios con fines puramente comerciales consiguiendo así ganar usuarios adeptos y conservarlos.
Unity es complice de la creación de auténticas obras de arte com opuedn ser Deus Ex o Rust por lo que es una apuesta interesante para los desarrolladores más experimentados, los cuales, pueden reservar ya su licencia desde la web oficial de Unity.

Trailer oficial del producto donde se puede obserbar su potencia:





Ya está aquí la nueva actualización de uno de los lenguajes de programación mas usados, Java 8, y viene cargado de nuevos e interesantes regalos, en linceus queremos dividir esta entrada en dos secciones, la primera especifica las características que incorpora ésta nueva versión, y para aquellos que requieran para su comprensión un poco más de profundidad conceptual, hemos incluído un apartado en el que definimos y ejemplificamos los conceptos que más prestan a confusión para así acabar de leer ésta entrada siendo capaces de comprender de forma general todas las novedades que vienen de la mano con ésta nueva entrega de Java.



Características:


  • Incorporación de lambdas como concepto para referirse a un nuevo uso de interfaces funcionales, ésto supondrá una implementación mas fácil de las mismas y de una forma lacónica y escueta en cuanto a interfaces se refiere, además, procurara el desarrollo de funciones anónimas y clausuras (programación funcional). Pero, ¿Qué es una entrada funcional exactamente?, ¿Y las funciones anónimas? lo veremos a continuación en el apartado de conceptos básicos.
  • Inclusión de anotaciones, FunctionalInterface. como declaración que forja la interfaz com ointerfaz funcional. (Las anotaciones son usadas por el compilador para evitar errores y agregar a las interfaces métodos)
  • Las interfaces ahora tienen potestad para estabñlecer métodos estáticos.Algo muy común en librerías, es que si existe una interfaz Foo, debe existir además una utilitaria (Foos) con métodos estáticosque operen con objetos de Foo (por ejemplo, la interfaz Collection y la clase Collections).gracias a ésta nueva modificación, todos estos métodos pueden ubicarse directamente en la interfaz.
  • Ahora es posible implementar de forma predeterminada los métodos, usando la palabra clave default.
  • Nuevo paquete java.time que implementa una mejora en la API de fechas con métodos cómo Date.tolnstand(), Date.from(instant) ó Calendar.tolnstant y nuevas clases como Instant, LocalDate, LocalTime, LocalDateTime ó ZonedDataTime.
  • Implantación de la API java.util.stream que soporta operaciones propias de la programación funcional sobre flujo de valores. (Ver Streams en conceptos básicos)
  • Las anotaciones pueden repetirse en distintos objetos
  • Eliminación del espacio PermGen (Espacio de memoria denominado Permanent Generation) a cambio, se inclusye "Metaspaace".
  • Uso del método Arrays.parallelSort para ordenar Arrays en paralelo (Múltiples Threads)
  • Incluirá un nuevo engine JavaScript (denominado "Nashorn"), que con un abrumador cambio en el rendimiento respecto al actual engine Rhino.

Conceptos básicos:



Lambdas (Interfaces funcionales):

De todas las características que Java 8 incorpora y que modifican sustancialmente el lenguaje, la que debería ser considerada, justamente, como la más significativa, es sin duda alguna la implementación de interfaces funcionales englobadas dentro de el nuevo concepto, lambdas.

Como concepto básico, es necesario conocer que una interfaz es considerada como funcional si declara exactamente 1 método abstracto en su código. Estas interfaces ya son implementadas a día de hoy por librerías.
Las interfaces funcionales pueden definir varios métodos de no incluir más de un método abstracto por lo que los métodos prefeterminados (default) no afectan a la hora de aplicar esta norma.

Lambdas (Funciones anónimas):

Ahora bién, una expresión lambda es un operador usado para  denotar funciones anónimas. Conviene saber qué es una función anónima antes de proseguir, mientras que en otras funciones se necesita crear una clase por cada operador, en las funciones anónimas, ésto no es necesario.



Ejemplo de uso:

Nota#: (a, b) representan los parámetros que recibe la función y ->la función en sí, además, la declaración de retorno (return) se omite dado que sólo tratamos con una expresión.

package MainClass;
import calc.*;
/**
 *
 * @author TEFI
 */
public class MainClass {
 public static void main(String[] args) {
 BinCalc calculadora = new BinCalc();
 BinCalcIF sumaL = (a, b) -> a + b;
 BinCalcIF restaL = (a, b) -> a - b;
 System.out.println("40 + 2 = " + calc.calcular(40, 2, sumaL));
 System.out.println("20 - 3 = " + calc.calcular(20, 3, restaL));
 }
}


Ejemplo de expresiones:

String::valueOf             x -> String.valueOf(x)
Object::toString            x -> x.toString()
x::toString                 () -> x.toString()
ArrayList::new              () -> new ArrayList<>()
Lambdas Hacking (English):



Streams:

Comparten un gran parecido con los iteradores. Los valores los valores fluyen y desaparecen por lo que solo pueden recorrerse una vez y pueden ser infinitos, además, pueden ser secuenciales (las acciones transcurren en único thread y de forma meramente secuencial) o paralelos (las acciones son subceptibles de ser ejecutadas simultáneamente dividiendo su lectura en varios threads de ejecución), lo que es configurable desde los métodos stream.sequential() ó stream.parallel().

Existen también dos clases de invocaciones qie los streams pueden ejecutar en su transcurso: "intermedias" y "finales". Las invocaciones intermediascontinúan el flujo, por su parte, las operaciones terminales "consumen"al stream y se tienen que invocar para finalizar la operacion.

Nota #: Los Arrays también suponen un conjunto de valores en una unidad de código pero éstos no son eliminados al ser leídos

Ejemplo de uso:

int sumOfWeights = blocks.stream().filter(b -> b.getColor() == RED)
                                  .mapToInt(b -> b.getWeight())
                                  .sum();



MetaSpace (redimensionado dinámico):



Libros Recomendados: Java SE 8 for the Really Impatient

Para más información consulta la documentación de Oracle respecto a Java 8 (English).