Cursos para aprender Java

Resultado de imagen de java
Logotipo de Java

Para todos aquellos que quieren aprender java, uno de los lenguajes más utilizados y que da más trabajo, hay un amplio abanico de posibilidades para aprender este lenguaje de programación. He aquí un posible listado:

Cursos de arquitectura Java: Hay varios cursos disponibles de forma gratuita y para usuarios más avanzados uno de arquitectura con Spring 4.3.

Universidad Java: Experto en Java de Cero a Master +64 horas: un curso que por un coste bastante asequible que no llega actualmente a los 20€, da un repaso y te enseña bastante materia en un orden adecuado, poco a poco.

Curso de Java 8 desde Cero: Un curso básico de las bases de Java de forma concisa. Esta plataforma tiene un pago mensual que permite acceder a varios cursos a la vez.

Cursos oficiales de Oracle: Empezando por «Java Foundations», y seguido por «Java Programming», dan una formación oficial por el fabricante.

Piña

Foto:

Parámetros:

ISO 200 55 mm Apertura f5,6 Velocidad 1/1250 seg.

Qué hay de nuevo en Java 9

Ya hay una fecha de lanzamiento para Java 9, que se refactorizará para crear una plataforma modular. La fecha prevista de lanzamiento es en Marzo de 2017, aunque ya hay builds disponible en la pagina Jigsaw de Oracle (link is external). Lo importante de esto es que las características están ya cerradas (link is external):

102: Actualización en la API de procesos
110: Cliente HTTP2
143: Mejora de bloqueos
158: Loggin de la JVM mejorado
165: Control del compilador
193: Manejo de variables
197: Caché de código segmentado
199: Compilación inteligente de Java
200: JDK Modular
201: Código fuente modular
211: Eludir warnings deprecados
212: Resolver Warnings en Lint y Doclint
213: Milling project coin
214: Eliminar combniaciones de GC
215: Tiered Attribution for javac
216: Process Import Statements Correctly
217: Annotations Pipeline 2.0
219: Datagram Transport Layer Security (DTLS)
220: Modular Run-Time Images
221: Simplified Doclet API
222: jshell: The Java Shell (Read-Eval-Print Loop)
223: New Version-String Scheme
224: HTML5 Javadoc
225: Javadoc Search
226: UTF-8 Property Files
227: Unicode 7.0
228: Add More Diagnostic Commands
229: Create PKCS12 Keystores by Default
231: Remove Launch-Time JRE Version Selection
232: Improve Secure Application Performance
233: Generate Run-Time Compiler Tests Automatically
235: Test Class-File Attributes Generated by javac
236: Parser API for Nashorn
237: Linux/AArch64 Port
238: Multi-Release JAR Files
240: Remove the JVM TI hprof Agent
241: Remove the jhat Tool
243: Java-Level JVM Compiler Interface
244: TLS Application-Layer Protocol Negotiation Extension
245: Validate JVM Command-Line Flag Arguments
246: Leverage CPU Instructions for GHASH and RSA
247: Compile for Older Platform Versions
248: Make G1 the Default Garbage Collector
249: OCSP Stapling for TLS
250: Store Interned Strings in CDS Archives
251: Multi-Resolution Images
252: Use CLDR Locale Data by Default
253: Prepare JavaFX UI Controls & CSS APIs for Modularization
254: Compact Strings
255: Merge Selected Xerces 2.11.0 Updates into JAXP
256: BeanInfo Annotations
257: Update JavaFX/Media to Newer Version of GStreamer
258: HarfBuzz Font-Layout Engine
259: Stack-Walking API
260: Encapsulate Most Internal APIs
261: Module System
262: TIFF Image I/O
263: HiDPI Graphics on Windows and Linux
264: Platform Logging API and Service
265: Marlin Graphics Renderer
266: More Concurrency Updates
267: Unicode 8.0
268: XML Catalogs
269: Convenience Factory Methods for Collections
270: Reserved Stack Areas for Critical Sections
271: Unified GC Logging
272: Platform-Specific Desktop Features
273: DRBG-Based SecureRandom Implementations
274: Enhanced Method Handles
275: Modular Java Application Packaging
276: Dynamic Linking of Language-Defined Object Models
277: Enhanced Deprecation
278: Additional Tests for Humongous Objects in G1
279: Improve Test-Failure Troubleshooting
280: Indify String Concatenation
281: HotSpot C++ Unit-Test Framework
282: jlink: The Java Linker
283: Enable GTK 3 on Linux
284: New HotSpot Build System
285: Spin-Wait Hints
287: SHA-3 Hash Algorithms
288: Disable SHA-1 Certificates
289: Deprecate the Applet API
290: Filter Incoming Serialization Data
292: Implementado de caracteristicas ECMAScript 6 en Nashorn
294: Linux/s390x Port
295: Compilado por adelantado
297: Porte unificado a arm32/arm64
298: Eliminar demos y ejemplos

Fuente: https://blogs.oracle.com/java/latest-java-9-news (link is external)

 

Pregunta de examen: ¿Que aporta Java 8?

Poco a poco se suceden las nuevas versiones de lenguajes, programas y frameworks. Hoy nos centraremos en las novedades de Java 8, que puede ser una típica pregunta de entrevista de trabajo para desarrolladores.

  • Expresiones Lambda. Se pueden definir expresiones en formato de funcion, es decir parametros de entrada y operación de salida.
  • Métodos por defecto en interfaces.
  • Nueva API time para manejo de fechas
  • Eliminación del espacio PermGen por uno llamado Metaspace, que cambia de tamaño dinamicamente.
  • Nuevos métodos en clases básicas.
  • Nuevas Excepciones.
  • API Stream. Con esta librería se pueden realizar operaciones sobre streams o flujos.
  • Interfaces funcionales. Son interfaces que declaran funciones de uso común.

Tu contraseña es muy mala y lo sabes

Reconócelo, no te comes mucho el coco con las contraseñas. Las repites por diestro y siniestro, lo mismo por el facebook como el foro de averias de tu movil/coche/lavadora. Pues ya sabes que corres el riesgo de cualquier ataque de seguridad contra tu privacidad, o incluso economía(no se que es peor).

Reconócelo de nuevo, usas o has usado alguna vez:

  • Patrones precedibles y recurrentes como 123456, password, cambiame, qwerty o alguna variación simple.
  • Variaciones de tu nombre, apellidos, o apodo.
  • Fechas de nacimiento, aniversarios, matriculas de coche tuya o de los tuyos.
  • Algo relacionado con tu equipo favorito, ya sea de fútbol o de baloncesto principalmente
  • La misma que el pin de la tarjeta.
  • El nombre de un familiar muy cercano, vease sobrinos, nietos, parejas, o alguien cercano fallecido.
  • Tus contraseñas no las cambias desde hace mas de un año.

Sí, listo, pero,  ¿cual pongo para acordarme?

  • Lo primero, usa mezcla de letras, numeros, incluso caracteres.
  • Que sean varias palabras no relacionadas, y si no están en el diccionario, mejor.
  • Con respecto a las cuentas importantes, aisla esas contraseñas, y no las utilices para foros y servicios chorras. Para cada servicio,una clave.
  • Ademas, para las páginas «chorras», utiliza claves tontas. Inventate algun patron que genere una clave distinta y facil de recordar por cada página.
  • Cambia la contraseña al menos cada año, si es con mas frecuencia, mejor.

Como idea, podeis coger ciertas letras de su libro, refran, cancion, por ejemplo la segunda letra de cada palabra de una frase que no olvides. Mezclala con numeros y caracteres.

Exportar tabla a formatos xml,json, insert, csv…

Cuando trabajamos con SQL Developer, a veces nos es útil exportar los datos a un cierto formato, vease los tipicos del asistente:

  • csv
  • xml
  • json
  • html
  • delimited
  • insert
  • loader
  • fixed
  • text
  • y en general todos los formatos exportables de SQL Developer.

Basta con ejecutar una sentencia como script (mediante F5) del tipo:

SELECT /*formatodelalistaanterior*/ * FROM usuarios;

Ejemplo

SELECT /*json*/ * FROM usuarios;

Nótese que el formato de json está disponible solo en las últimas versiones de SQL Developer.

Fuente: http://www.thatjeffsmith.com/archive/2012/05/formatting-query-results-to-csv-in-oracle-sql-developer/ (link is external)

Equivalencias entre Maven y Gradle

He encontrado en JournalDev (link is external) un post interesante sobre los comando equivalentes entre gradle y Maven, muy útil si estamos aprendiendo Gradle y ya sabemos maven. En el se explica tanto como definir las dependencias, como construir y empaquetar el proyecto. Ejemplos:

mvn package –> gradle assemble

mvn install –> gradle install

mvn eclipse:eclipse –> gradle eclipse

Mantente actualizado de tus paginas favoritas

En este primer post sobre consumo, cuya intención es acercar las herramientas a personas no estrictamente relacionadas con la informática, descubriremos como estar al tanto de las novedades de vuestras webs favoritas, sin que nos invadan el correo o cualquieras de nuestras cuentas personales, y sin que se pierdan. Hablamos de los agregadores de noticias, unas aplicaciones que se encargar de guardar todas las actualizaciones de nuestras webs favoritas. Para ello, simplemente hay que utilizar una de estas aplicaciones y añadir el feed(suele aparecer con un icono naraja con un punto y unos arcos, representando la difusion/sindicacion de noticias) que aparece en la pagina que nos gusta.

¿Qué agregadores de noticias existen?

Feedly (link is external). Tiene un estupendo buscador, y tiene categorizacion por temáticas. Con versiones para la web, android, e IOS.

Pulse (link is external). Igualmente permite la categorización, ofreciendo una interfaz mas visual con imágenes en miniaturas

FlipBoard. Otra alternativa interesante.

Cualquiera de ellas puede convertir tu forma de ver tus webs favoritas en el acto sin tener que visitar una a una. De esta forma encontraras directamente tus contenidos favoritos sólo cuando tu estés interesado.

Ejemplos de noticias sobre consumo:

  • Blog En Naranja.
  • Noticias de Ocu.
  • Feed de FACUA, consumidores en acción.
  • Eroski Consumer.

Servicio Web RestFUL

Dada la creciente demanda de construir aplicaciones SOA (Arquitectura Orientada a Servicios), es interesante ver como se construye rápidamente una api RESTFUL con Java y Spring. Para ello me baso en el tutorial básico de la página oficial de spring.io (link is external).

En dicho tutorial, se puede descargar el proyecto con estructura Maven o Gradle. El proyecto es tan simple como que únicamente tiene una depencencia con la librería Spring Boot, aunque también sería interesante utilizar la librería Jackson, para convertir objetos en formato json, un formato estandar utilizado para las peticiones(Request) y las respuestas(Response).

Para aquellos que aún no conocen la filosofía REST, en pocas palabras consiste en hacer las operaciones típicas de una aplicacion, crear, actualizar, eliminar, listar, y buscar, mediante las operaciones HTTP básicas:

  • GET. Recuperar un objeto o conjunto de objetos. Ejemplo, /ver/municipio/43, devolvería un objeto municipio en un cierto formato(JSON, XML,…).
  • POST. Crea un nuevo recurso/objeto. /crear/municipio Crea un municipio con el contenido que se envia en un cierto formato.
  • PUT. Crear un nuevo recurso/objeto, o actualizarlo, ejemplo: /actualizar/municipio/43 con un objeto xml o json en la petición.
  • DELETE. Se utiliza para eliminar recursos, ejemplo: llamada a  hastalasnubes.com/borrar/municipio/43

Más informacion:

http://docs.oracle.com/cd/E41633_01/pt853pbh1/eng/pt/tibr/concept_UnderstandingRESTServiceOperations.html (link is external)

https://spring.io/guides/gs/rest-service/ (link is external)

http://www.codingpedia.org/ama/tutorial-rest-api-design-and-implementation-in-java-with-jersey-and-spring/ (link is external)

http://javapapers.com/java/java-restful-web-services-with-json-and-jersey/ (link is external)

http://javapapers.com/web-service/restful-services-crud-with-java-jax-rs-jersey/ (link is external)