# data[].attributes.attachment_link.readable_text
R es un entorno y un lenguaje de programación enfocado en el análisis estadístico de los más utilizados en el campo de la minería de datos que pueden aplicarse a gran variedad de disciplinas.

Este lenguaje forma parte de GNU y se distribuye bajo licencia GNU GLP.

Características y ventajas de la programación en R

El lenguaje de programación R es un proyecto colaborativo y abierto, los desarrolladores pueden descargar el código de forma gratuita y modificarlo para incluir mejoras.

Es un lenguaje interpretado, funciona mediante comandos.

R proporciona una amplia gama de herramientas estadísticas que incluyen análisis de datos y generación de gráficos. Este lenguaje tiene capacidad de generar gráficos de alta calidad. Estas características lo convierten en una potente herramienta de cálculo.

Gracias a este lenguaje de programación los Data Scientists pueden manejar grandes volúmenes de datos.

Puede integrarse con distintas bases de datos. Una de las ventajas más importantes de R es que funciona con diferentes tipos de hardware y software (Windows, Unix, Linux...)

El lenguaje R ofrece la posibilidad de cargar bibliotecas y paquetes con diversas funcionalidades lo que permite a los usuarios extender su configuración básica.

La comunidad en torno a R es muy activa por lo que es sencillo encontrar soluciones rápidamente a los problemas que los usuarios se puedan encontrar.

Datatons y R

En Datatons tenemos un equipo especializado en desarrollo de analíticas basadas en R, "somos Erreros!" y participamos en la comunidad de usuarios de R de forma activa, una muestra de nuestra involucración es el patrocinio de las Jornadas Nacionales de R.

# data[].attributes.attachment_link.title
¿Qué es R? Ventajas de la programación en R

# data[].attributes.attachment_link.description
R es un entorno y un lenguaje de programación enfocado en el análisis estadístico de los más utilizados en el campo de la minería de datos que pueden aplicarse a gran variedad de disciplinas. Este lenguaje forma parte de GNU y se distribuye bajo licencia GNU GLP.

# data[].attributes.attachment_link.readable_text
La estructura completa de Perl deriva ampliamente del lenguaje C. Perl es un lenguaje imperativo, con variables, expresiones, asignaciones, bloques de código delimitados por llaves, estructuras de control y subrutinas.

Perl también toma características de la programación shell. Todas las variables son marcadas con un signo precedente (sigil). Los sigil identifican inequívocamente los nombres de las variables, permitiendo a Perl tener una rica sintaxis. Notablemente, los sigil permiten interpolar variables directamente dentro de las cadenas de caracteres (strings). Como en los shell, Perl tiene muchas funciones integradas para tareas comunes y para acceder a los recursos del sistema.
Perl toma las listas del Lisp, hash (memoria asociativa) del AWK y expresiones regulares del sed. Todo esto simplifica y facilita todas las formas del análisis sintáctico, manejo de texto y tareas de gestión de datos.
Existen varias características acerca de Perl que son importantes de rescatar, las cuales se mencionan a

continuación:
1. Es fácil de usar, aunque es difícil de aprender. Cuando se ha programado en Perl por varias horas,
Perl se va a ir haciendo cada vez más fácil de implementar. Este lenguaje se desarrolló pensando
en que el lenguaje fuera práctico (fácil de usar, eficiente, y completo) en lugar de pequeño,
elegante y mínimo, además de que esta enfocado hacia un desarrollador que posee cierta cantidad
de conocimientos sobre el lenguaje y no así hacia un estudiante que esta aprendiendo.

2. Existen muy pocas cosas que no se pueden hacer con este lenguaje, por lo que se le puede
considerar como un lenguaje que no tiene fronteras. Con Perl se puede programar cualquier
necesidad que se tenga, ya que existen librerías y módulos para casi cualquier cosa que se
requiera, pero hay aplicaciones que requieren mucha rapidez en las cuales es mejor utilizar otros
lenguajes que no sean interpretados.

3. Es rápido de crear, ya que no posee funciones que, aunque sean bastante interesantes, hagan
disminuir la velocidad de desarrollo de una aplicación del lenguaje.

4. El lenguaje es feo, siendo esta una de las principales razones para su difícil aprendizaje, aunque
esto se compensa con el poder de alcance del lenguaje. Es por esto que Larry Wall escogió el
camello como el logotipo del lenguaje, ya que aunque es feo, siempre trabaja fuerte aún en
condiciones complicadas.

5. Se puede utilizar en varios entornos, como puede ser Windows 95, OS/2, Linux, entre muchos
otros, sin realizar cambios de código, siendo únicamente necesario la introducción del interprete
Perl correspondiente a cada sistema operativo .

6. Tiene características que soportan una variedad de paradigmas de programación, como la
estructural, funcional y la orientada a objetos. Al mismo tiempo, Perl no obliga a seguir ningún
paradigma en particular, ni obliga al programador a elegir alguna de ellas. No obstante, esta
característica es solo accesible en la versión 5.0.

7. Tiene incorporado un poderoso sistema de procesamiento de texto y una enorme colección de
módulos disponibles.

8. Ofrece una ayuda en línea desde la consola de comandos. Por ejemplo, para obtener ayuda sobre la
función print, se debe de escribir en una ventana MSDOS: perldoc -f print.

9. Se ejecuta desde la línea de comandos de una ventana del sistema operativo.

10. Es un lenguaje case-sensitive, lo cual hace referencia a la propiedad de un texto para presentarse
en mayúsculas o en minúsculas.

En Perl 5, se añadieron características para soportar estructuras de datos complejas, funciones de primer orden (p. e. clausuras como valores) y un modelo de programación orientada a objetos. Éstos incluyen referencias, paquetes y una ejecución de métodos basada en clases y la introducción de variables de ámbito léxico, que hizo más fácil escribir código robusto (junto con el pragma strict). Una característica principal introducida en Perl 5 fue la habilidad de empaquetar código reutilizable como módulos. Larry Wall indicó más adelante que "la intención del sistema de módulos de Perl 5 era apoyar el crecimiento de la cultura Perl en vez del núcleo de Perl".

Todas las versiones de Perl hacen el tipificado automático de datos y la gestión de memoria. El intérprete conoce el tipo y requerimientos de almacenamiento de cada objeto en el programa; reserva y libera espacio para ellos según sea necesario. Las conversiones legales de tipo se hacen de forma automática en tiempo de ejecución; las conversiones ilegales son consideradas errores fatales.

# data[].attributes.attachment_link.description
La estructura completa de Perl deriva ampliamente del lenguaje C. Perl es un lenguaje imperativo, con variables, expresiones, asignaciones, bloques de código delimitados por llaves, estructuras de control y subrutinas. Perl también toma características de la programación shell. Todas las variables son marcadas con un signo precedente (sigil).

# data[].attributes.attachment_link.readable_text
Hoy os vengo a hablar de otro lenguaje web muy extendido en el mundo del desarrollo y es ni más ni menos quePHP (PHP Hypertext Pre-processor), que a diferencia de sus vecinos HTML y CSS, sí es un lenguaje de programación, en vez de maquetación, ya que con el puedes implementar varias instrucciones que generen resultados y, sobretodo, lograr la comunicación con un servidor de datos para tu web.

Pero ¿cuáles son los casos en los que nos puede interesar implementar este lenguaje a nuestros servicios? Antes de nada debemos comprender qué clase de web tenemos en nuestras manos, ya que es posible que no necesitemos PHP y, por ende, no sería útil hacer nuestros archivos como tal. Hay que destacar que hay una diferencia entre almacenar un documento como HTML o como PHP, aunque contengan las mismas líneas: para el servidor es más pesado procesar el segundo caso. Es decir, perdemos tiempo de respuesta de cara al usuario final. Vamos a ver algunas de las características que nos ofrece y porque es interesante complementar nuestras habilidades con él.

7 características del lenguaje PHP

¿Debería aprender PHP? Esa es la pregunta del millón. Ya han sido algunas ocasiones que he recomendado dominar el abanico de los lenguajes web (HTML, CSS, PHP, SQL y JavaScript). No sólo por el hecho de que hay trabajo de ello, por lo que con los tiempos que corren en el mundo laboral, es algo que tenéis ganado. También por la potencia que le vais a dar a vuestras webs. Pero dejando de lado el factor formativo, necesitaremos de tal cuando deseemos que nuestros HTML se alimenten de los datos de un servidor.

Pondré, por ejemplo, una vez más, la tienda online. Los productos que tenemos en nuestro almacén no siempre son los mismos. Varían y eso causa que los datos también lo hagan. Si nuestra web es estática (no se modifica de manera automática), somos nosotros, los desarrolladores, los que debemos introducir los nuevos datos para que se visualicen. Gracias a PHP y su habilidad para conectarse a un servidor, podemos generar un pequeño código que haga esto por nosotros y ahorrarnos trabajo. Esta es la característica más notable del lenguaje: la conexión a un servidor para acceder a los datos. Os gustará saber que es un lenguaje fácil de aprender. No es especialmente complejo y comparte sintaxis con otros que podáis haber visto anteriormente, como por ejemplo JavaScript (su vecino en este mundo). Vamos a repasar con una lista qué podemos hacer con PHP.

1. Gran extensión de documentación

Ya sea creada de manera oficial como por los usuarios, PHP tiene la ventaja de ser usado por millones de usuarios en muchos proyectos. De cara al nuevo programador es una gran ventaja porqué no hay nada mejor que un lenguaje con una gran comunidad detrás, sobre todo para los no tan afines al idioma anglosajón.

2. Variedad de herramientas para aprender

Tenemos varios métodos para iniciarnos: podemos contratar un servidor remoto para subir nuestros archivos, como haríamos con cualquier web, lo cual tiene lógica ya que si tenéis vuestro sitio en la red ya tenéis este recurso con vosotros; podemos crear un servidor local con una máquina virtual, o lo más popular entre los alumnos: descargar la herramienta libre WAMP ( XAMP o LAMP en función de si es para Mac OSX o Linux). Esta herramienta simula que vuestra máquina local es un servidor web para poder ejecutar los ficheros PHP. Es decir, sea cual sea vuestra situación, es imposible que os quedéis fuera, sobretodo teniendo en cuenta que no requiere un entorno de desarrollo complejo, como ocurre con Titanium.

3. Mucha oferta de trabajo

Hoy en día las webs más complejas funcionan bajo PHP, por lo que son muchas las empresas que requieren los servicios de un desarrollador de este lenguaje.

4. Permite programación orientada a objetos

Esto significa que podréis dividir vuestros scripts en métodos, clases, etc. para hacer más ágil de cara al servidor el procesamiento de los datos.

5. Módulos externos para mejorar la aplicación web

Gracias a esto, podréis implementar funcionalidades que de por sí no existen, siendo una gran solución a vuestras necesidades. Por ejemplo, en vez de programar de cero una pantalla de registro, podéis usar un módulo ya hecho. Esto no sería posible si no fuese orientado a objetos, como menciono en el punto anterior.

6. Se puede separar la estructura

Con esto quiero decir que podéis tener de manera independiente el código que se encarga de mover los datos del que se enlaza a la interfaz. Esto se conoce como Modelo Vista/Controlador (MVC). Gracias a esta característica, no "contaminaremos" código con líneas innecesarias y lo mantendremos limpio y ordenado.

7. La libertad es un bien muy preciado

Si, PHP es totalmente libre y multi-plataforma, por lo que no importa que sistema operativo uséis. Su desarrollo es posible en cualquier sitio (siempre y cuando la máquina sea capaz de ejecutar el código).

Como podéis ver, cuando PHP salió a la luz, nunca un lenguaje web llegó a ser tan potente y lleno de posibilidades, y aún hoy en día se usa en todo el mundo. Sin ir más lejos, ¿cómo creéis que Facebook maneja tantos datos y es capaz de mover una web dinámica tan grande? O, por poner otro ejemplo, ya que muchas veces hemos hablado de él, Wordpress funciona bajo PHP.

¿Qué os parece? ¿Conocíais este lenguaje web? Hacédmelo saber en los comentarios

Curso relacionado: Curso de Programación con HTML5, CSS y PHP

# data[].attributes.attachment_link.title
7 características del lenguaje PHP que lo convierten en uno de los más potentes

# data[].attributes.attachment_link.description
Hoy os vengo a hablar de otro lenguaje web muy extendido en el mundo del desarrollo y es ni más ni menos quePHP (PHP Hypertext Pre-processor), que a diferencia de sus vecinos HTML y CSS, sí es un lenguaje de programación, en vez de maquetación, ya que con el puedes implementar varias instrucciones que generen resultados y, sobretodo, lograr la comunicación con un servidor de datos para tu web.

# data[].attributes.attachment_link.readable_text
15/07/2014 -

Este martes hemos tenido un evento dedicado a Swift en #programadorIO, adecuado para las personas que están deseando conocer más sobre el lenguaje y los motivos por los que Apple está poniendo tanto empeño en que salga adelante, a pesar que podría ser una competencia para otros lenguajes ya introducidos entre los desarrolladores como puede ser Objective-C.

Swift ha sido presentado en sociedad hace aproximadamente un mes, durante la conferencia de desarrolladores de Apple WWDC14. En una retransmisión #xcodeIO ya os introdujimos algunas características sobre Swift y ahora hemos ampliado la información con novedades anunciadas en las últimas semanas.

Swift está en Beta 3, todavía estamos expectantes ante diversos cambios que se están produciendo en el lenguaje y es de suponer que las próximas entregas todavía puedan modificar más las características de esta tecnología. Sin embargo ya podemos saber bastantes cosas relacionadas con la filosofía y los motivos de la compañía de presentar este lenguaje de programación.

En este post encuentras el vídeo del programa, del que te ofrecemos un resumen sobre sus puntos más destacados.

Facilidad de usar el lenguaje para aprender a programar

Objective-C es un lenguaje un poco complicado que puede resultar difícil de aprender para personas sin mucha experiencia en la programación. Es por ello que a veces puede resultar frustrante para desarrolladores que no tienen suficiente paciencia, o experiencia. Esto ha llevado a muchos a desconsiderar la posibilidad de aprender de manera exhaustiva el lenguaje, incluso puede haber decantado a más de uno hacia otros modelos de desarrollo de apps como el que nos proponen plataformas como PhoneGap, basadas en HTML5.

Apple ha escuchado a los desarrolladores y ha creado un lenguaje más sencillo. Esto no quiere decir que no sea complejo internamente o que desarrolladores con suficientes conocimientos no lo puedan usar de manera más avanzada. Por ejemplo la programación orientada a objetos no es una necesidad en Swift, pero si te sientes cómodo con ella usarla es perfectamente factible.

Extensión de Swift para otro tipo de desarrollo

Se espera de Swift que se pueda usar para desarrollar otros tipos de programas además de las apps para iOS y nos referimos no solamente al desarrollo de software para Mac. De momento han encarado el lenguaje para desarrollo de aplicaciones para iOS, pero el objetivo es que sirva para hacer todo tipo de aplicaciones en todos los sistemas.

De este modo se podrá equiparar los desarrolladores de Swift a desarrolladores de otros lenguajes con mayor penetración como Java. Es decir, la persona que desarrolla para Android en Java, con el mismo lenguaje puede hacer aplicaciones para escritorio en diferentes sistemas operativos, puede desarrollar para una mayor gama de dispositivos que están instalando Android, puede desarrollar para el mundo web, etc. ¿Por qué no entregarles esa misma versatilidad a los desarrolladores de Swift?

Swift estará liberado como código libre adaptado a otros entornos y extensible por la comunidad

Otro de los detalles que se saben es la intención de Apple de liberar el lenguaje. Esto permitiría que la comunidad participase activamente en su desarrollo. Llevaría el lenguaje a nuevas cotas de adaptación a las necesidades más diversas y provocará que su futuro sea más acorde a los gustos e intenciones de los desarrolladores que trabajan con él.

Apple piensa en grande y quiere atraer a la comunidad para impulsar su nuevo lenguaje. Liberar la tecnología siempre es algo de agradecer y permitirá llevarla a otros entornos, de modo que se pueda usar en más situaciones. Pero, aunque esto último son solamente elucubraciones, ¿Por qué no permitir a los desarrolladores que trabajan con otros sistemas desarrollar en un lenguaje como Swift? Habrá que ver los movimientos en el futuro pero sería algo muy interesante que por fin usuarios de otros sistemas como Windows o Linux puedan desarrollar en los lenguajes de Apple sin tener que invertir en la compra de un ordenador Mac.

Empezar a trabajar con Swift

Este próximo jueves os vamos a ofrecer una sesión para conocer Swift desde un enfoque más técnico y práctico. Vamos a realizar un evento en vivo en el que nuestros compañeros van a demostrar que Swift es un lenguaje que puede ser perfectamente válido para empezar en el aprendizaje para programar.

En este evento vamos a mostrar cómo se realiza una aplicación en Swift y cómo se realizaría usando otro lenguaje tan popular como Javascript con HTML5. Como es un programa en el que pretendemos mostrar bastante código, lo transmitiremos por webinar, a través del mismo programa que usamos para los cursos en EscuelaIT.

Para poder juntarte a nosotros y aprovechar esta clase práctica de Swift y comparativa con el desarrollo de apps en HTML5, tienes que decirnos el correo donde deseas que te enviemos la invitación de acceso a la clase en esta página del webcast de Swift.

# data[].attributes.attachment_link.title
Conociendo las características y filosofía de Swift en #programadorIO

# data[].attributes.attachment_link.description
15/07/2014 - Este martes hemos tenido un evento dedicado a Swift en #programadorIO, adecuado para las personas que están deseando conocer más sobre el lenguaje y los motivos por los que Apple está poniendo tanto empeño en que salga adelante, a pesar que podría ser una competencia para otros lenguajes ya introducidos entre los desarrolladores como puede ser Objective-C.

# data[].attributes.attachment_link.title
Principales Características del Lenguaje Python

# data[].attributes.attachment_link.description
Cuatro Ríos Tecnologías, es una corporación de empresas del sector de las tecnologías de la información que consolidadamente brindan servicios informáticos de alta calidad.

# data[].attributes.attachment_link.readable_text
Principales Características de JAVA.
Java es un lenguaje de programación de propósito general orientado a objetos desarrollado por Sun Microsystems. También se puede decir que Java es una tecnología que no sólo se reduce al lenguaje sino que además provee de una máquina virtual Java que permite ejecutar código compilado Java, sea cual sea la plataforma que exista por debajo; plataforma tanto hardware, como software (el sistema operativo que soporte ese hardware). El apoyo a esta tecnología viene dado por la gran cantidad de fabricantes que apoyan esta especificación de máquina virtual.
Aprender el lenguaje de programación Java requiere tiempo y esfuerzo, pero en este curso trataremos de sentar las bases para el conocimiento general del lenguaje. El lenguaje se inspira en otros lenguajes:

sentencias comunes de C y C++ (sintaxis parecida a dichos lenguajes)

concurrencia parecida a la de Mesa (un lenguaje de investigación de Xerox)

interrupciones parecidas a las de Modula-3

tratamiento de enlace dinámico de código nuevo parecido al de Lisp

definiciones de interfaces parecidas a las de Objective C

gestión de almacenamiento automático parecida a la de Lisp

Características.
Sun describe al lenguaje Java de la siguiente manera: Sun admite que lo dicho anteriormente son un montón de halagos por su parte, pero el hecho es que todas esas caraterísticas pueden servir para describir el lenguaje. Todas ellas son importantes, sin embargo cabe destacar tres, que son las que han propocionado tanto interés por el lenguaje: la portabilidad, el hecho de que sea de arquitectura neutral y su simplicidad. Java ofrece toda la funcionalidad de los lenguajes potentes, pero sin las características menos usadas y más confusas de éstos.
Java elimina muchas de las características de otros lenguajes como C++, para mantener reducidas especificaciones del lenguaje y añadir características muy útiles como el recolector de basura. No es necesario preocuparse de liberar memoria, el recolector se encarga de eliminar la memoria asignada. Gracias al recolector, sólo te tienes que preocupar de crear los objetos relevantes de tu sistema ya que él se encarga de destruirlos en caso de no ser reutilizados.

Java reduce en un 50% los errores más comunes de programación con lenguajes como C y C++. Entre las características más "indeseables" de C++ que se han evitado en el diseño de Java destacan: ficheros de cabecera, aritmética de punteros, sobrecarga de operadores, estructuras, uniones, conversión implícita de tipos, clases base virtuales, pre-procesador, etc.

Comentemos algunas de las características más interesantes:

Java es interpretado.
Estrictamente hablando, Java es interpretado, aunque en realidad Java es tanto interpretado como compilado. De hecho, sólo cerca del 20% del código Java es interpretado por la JVM (Java Virtual Machine), pero es un 20% muy importante. Tanto la seguridad de Java como su habilidad para ser ejecutado en múltiples plataformas se deben a que los pasos finales de la compilación se manejan localmente.
Existen ciertos entornos que para mejorar el rendimiento usan un pequeño compilador para la última fase de compilación, de forma que una vez que se tenga el bytecode, en vez de interpretarlo se compila generando código nativo para esa plataforma y se ejecuta, pero esta compilación se realiza cada vez que se quiera ejecutar el programa. El único código realmente independiente es el bytecode. Este tipo de compiladores se conocen como 'Just In Time' o JIT. Sin embargo, el bytecode no se completa hasta que se junta con un entorno de ejecución, que en este caso será la máquina virtual Java de la plataforma en la que estemos. Un browser puede proveer dicha plataforma desde el punto de vista del sistema operativo.

Inconvenientes.

El browser tiene que interpretar los ficheros de clases antes de que se ejecuten. Utilizando un lenguaje de programación tradicional como puede ser el C++, el ordenador puede ejecutar directamente el código generado. Sin embargo, debido a la interpretación que el browser tiene que hacer de los ficheros, los programas escritos en Java tienden a ejecutarse bastante más lentos que con otros lenguajes de programación (p.e. C++).

¿Por qué se considera un rasgo positivo el hecho de combinar la compilación y la interpretación?

Facilita la seguridad y la estabilidad.

Reduce los problemas de versiones.

El hecho de que la última fase de la compilación se lleve a cabo por un dispositivo de una determinada plataforma, releva al programador de la responsabilidad del mantenimiento de varios fuentes en varias plataformas. La interpretación también admite que los datos se incorporen en tiempo de ejecución, de ahí el comportamiento dinámico que también caracteriza a Java.
La máquina virtual Java.
Para establecer Java como parte integral de la red, el compilador Java compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. Cualquier máquina que tenga el sistema de ejecución (runtime) puede ejecutar ese código objeto, sin importar en modo alguno la máquina en que ha sido generado.
El código fuente Java se "compila" a un código de bytes de alto nivel independiente de la máquina. Este código (bytecode) está diseñado para ejecutarse en una máquina hipotética que es implementada por un sistema runtime, que sí es dependiente de la máquina. Por lo tanto, lo que verdaderamente es dependiente del sistema es la Máquina Virtual Java (JVM) y las librerías fundamentales, que también nos permitirían acceder directamente al hardware de la máquina. El compilador Java genera bytecode que serán ejecutables dondequiera que exista una JVM.

Orientación a objetos.
Java implementa la tecnología básica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con interfaces a esos objetos. Soporta las tres características propias del paradigma de la orientación a objetos: encapsulación, enlace dinámico y polimorfismo. Los modelos de objetos son llamados, como en C++, clases y sus copias, instancias. Estas instancias, como en C++, necesitan ser construidas y destruidas en espacios de memoria.
Java incorpora funcionalidades inexistentes en C++ como por ejemplo, la resolución dinámica de métodos. Esta característica deriva del lenguaje ObjectiveC. En C++ se suele trabajar con librerías dinámicas (DLLs) que obligan a recompilar la aplicación cuando se retocan las funciones que se encuentran en su interior. Java resuelve este inconveniente mediante una interfaz específica llamada RTTI (Run Time Type Identification) que define la interacción entre objetos excluyendo variables de instancias o implementación de métodos. Las clases en Java tienen una representación en el runtime que permite a los programadores interrogar por el tipo de clase y enlazar dinámicamente la clase con el resultado de la búsqueda.

En Java casi todo son objetos. La mayoría de los lenguajes orientados a objetos permiten la herencia múltiple, lo que puede llevar a confusiones y/o complicaciones innecesarias. Java no permite herencia múltiple, sólo soporta "Herencia simple" en una estructura cósmica (todas las clases Java derivan jerárquicamente de la clase "Object"). La herencia simple significa que en cada momento cada clase sólo hereda de otra clase. Este tipo de herencia evita problemas del tipo de herencias múltiples contradictorias o exclusivas entre sí.

Java también permite la creación de clases totalmente abstractas, a las que llama interfaces con características similares a los interfaces IDL de CORBA. Las interfaces permiten definir métodos que
pueden compartir con varias clases, sin tener en cuenta cómo las otras manejan los métodos.

Seguridad en JAVA.
El código Java pasa muchos tests antes de ejecutarse en una máquina. El código se pasa a través de un verificador de bytecodes que comprueba el formato de los fragmentos de código y aplica un probador de teoremas para detectar fragmentos de código ilegal -código que falsea punteros, viola derechos de acceso sobre objetos o intenta cambiar el tipo o clase de un objeto-.
Si los bytecode pasan la verificación sin generar ningún mensaje de error, entonces sabemos que:

El código no produce desbordamiento de operandos en la pila

El tipo de los parámetres de todos los códigos de operación son conocidos y correctos

No ha ocurrido ninguna conversión ilegal de datos, tal como convertir enteros en puntero

El acceso a los campos de un objeto se sabe que es legal: public, private, protected

No hay nungún intento de violar las reglas de acceso y seguridad establecidas

Evitamos saltos a mitad de una instrucción, o direccionamientos de memoria de un objeto fuera de los límites del mismo.

El cargador de clases también ayuda a Java a mantener su seguridad, separando el espacio de nombres del sistema de ficheros local, del de los recursos procedentes de la red. Esto limita cualquier aplicación del tipo Caballo de Troya, ya que las clases se buscan primero entre las locales y luego entre las procedentes del exterior.
Definición de API.
API son las iniciales de Application Programmer Interface. Pensemoslo siguiente. Por muy completo que sea un lenguaje en cuanto a estructuras, tipos de datos y operadores, para que sea funcional necesita hacer E/S (procesar ficheros, pedir datos por teclado, leer el ratón o visualizar ventanas). La E/S es dependiente del Sistema Operativo. La API es una capa de abstracción que se pone encima del S.O. para permitir hacer entradas y salidas de una manera estandarizada. Se trata de una especificación de una librería software, detallando las llamadas a funciones, los argumentos, y los resultados que obtienes al utilizarlas. Una API sólo existe en papel y no es más que diseño. De hecho, para usar una API necesitas una librería que exista y que implemente esa API.
Clasificación de las APIs

Las APIs están clasificadas como API Core (Núcleo) o como Standard Extension (Extensiones estándar). Una API Core es aquélla que viene incluida en el sistema JDK, es parte de la implementación estándar de Sun y cualquier sistema Java tiene que ser capaz de soportarlas. Una extensión estándar es una librería que los sistemas Java no tienen por qué soportar, pero de hacerlo, lo tiene que hacer siguiendo exactamente la forma estándar.

# data[].attributes.attachment_link.description
Java es un lenguaje de programación de propósito general orientado a objetos desarrollado por Sun Microsystems. También se puede decir que Java es una tecnología que no sólo se reduce al lenguaje sino que además provee de una máquina virtual Java que permite ejecutar código compilado Java, sea cual sea la plataforma que exista por debajo; plataforma tanto hardware, como software (el sistema operativo que soporte ese hardware).