Mini guía Java...¿qué tanto sabes?


Espero les sirva de algo

" ¿Eres experto en Java?"

  • Si, que bien (de todos modos dale un vistazo).
  • No, que bien esto te servirá.

Nota:No se esta tomando un orden en particular. Y la información es muy breve.

1. ¿Qué es SCJP?

Significa Sun Certified Java Programmer. Es una certificación de Sun para programadores en Java.

2. ¿Qué es SCJD?

Significa Sun Certified Java Developer. Es una certificación de Sun para desarrolladores en Java.

3. ¿Qué es lo qué comprende una Certificación Java?

Estuve investigando y comprende lo siguiente:

  • Fundamentos de la tecnología Java
  • Desarrollo de interfaces gráficas AWT y Swing
  • Diseño Web: Applets, DHTML y AJAX
  • Bases de datos con Java y programación distribuida
  • Arquitectura J2EE: Servlets y JSP
  • Introducción a la programación XML
  • Tecnología Struts: Arquitectura Modelo, Vista, Controlador
  • Tecnología Hibernate
  • Tecnología Spring

Le pregunté a un ingeniero de sistemas con certificación Java (SCJP) y según él... ¡básicamente un programador Java se convierte en un compilador humano! También le pregunté que venia en el examen (ja,ja,ja), pero solo se limito a darme unos tips:

  • Estudiar matemáticas (si, así es...no me crean)
  • Cómo instalar java y las famosas variables de entorno PATH y CLASSPATH
  • Conceptos básicos de programación: estructuras de datos, flujo de datos,operadores lógicos y aritméticos
  • Programación Orientada a Objetos:clases, objeto e instancias, herencia, polimorfismo y encapsulación
  • Analizar y depurar código:detectar errores en código, depuración,etc.
  • Inglés (no me crean)...el tuvo que tomar un curso de inglés antes del curso y el examen...no sé si será cierto

5. ¿Qué es el Modelo, Vista, Controlador?

Es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario en tres componentes distintos. En ambientes Java (Swing y AWT)un mismo objeto se ve de esas tres formas:

  1. MODELO:Se refiere al modelo de datos que utiliza el objeto; es la información que se manipula mediante el objeto Swing
  2. VISTA:Es cómo se muestra el objeto en la pantalla
  3. CONTROLADOR:Es lo que define el comportamiento del objeto

6. ¿Qué es JFC?

Significa Java Foundation Classes...API de Java.Clases Base Java; framework gráfico para contruir GUIs portables basadas en Java. La GUI Java se compone de :

  • AWT:Abstract Window Toolkit; al tener algunos limitantes se creó Swing
  • Swing:se considera una extensión de AWT; contiene más componentes y mejoras sobre AWT
  • SWT:Standard Widget Toolkit
 //Ejemplo
 
 import java.awt.Container;
 import javax.swing.*;
 public class ventana extends JFrame implements ActionListener{
 JButton boton= new JButton("Mi botón");
 public ventana(){
 boton.addActionListener(this);
 ...
 ...
 }
 public void actionPerformed(ActionEvent e){
 
 }
 }
 
 

7. ¿Qué es Struts?

Es una herramienta de soporte para el desarrolo de aplicaciones Web bajo el patrón MVC (modelo, vista, controlador) en plataformas J2EE.

Un framework es la extensión de un lenguaje mediante una o más jerarquías de clases que implementan una funcionalidad y que (opcionalmente) pueden ser extendidas. El framework puede involucrar TagLibraries.

El patrón de arquitectura MVC (Model-View-Controller) es un patrón que define la organización independiente del Model (Objetos de Negocio), la View (interfaz con el usuario u otro sistema) y el Controller (controlador del workflow de la aplicación: "si estoy aquí y me piden esto entonces hacer tal cosa, si sale bien mostrar esto y sino lo aquello otro").

8. ¿Qué son los Servlets y JSP?

Servlet: Programas Java que se ejecutan en un servidor Web (Tomcat). Equivalentes a los applets pero del lado del servidor.

JSP: Java Server Pages; es una tecnología del lado del servidor que permite usar Servlets de "manera sencilla".

Son las tecnologías planteadas por Java para crear aplicaciones cuyas tecnologías
residan en el lado del servidor. Las aplicaciones (sean servlets o JSP) se empaquetan dentro de archivos war (pueden
ser generados por la aplicación jar).

La estructura de estos archivos es:

  • Un directorio raíz del que parten todas las carpetas de la aplicación, sólo este
    directorio es visible para los navegadores
  • El directorio WEB-INF que contiene los archivos de ejecución de la aplicación.
    Este directorio es invisible a los navegadores, sólo es visible para el servidor
  • La carpeta class donde se almacenan los archivos precompilados que forman
    parte de la aplicación (incluidas las Servlets)
  • La carpeta lib en la que se almacenan los archivos jar para librerías de clases que
    utiliza la aplicación (incluidos los drivers JDBC en forma de archivo jar)
  • El archivo web.xml que sirve para controlar el funcionamiento de la aplicación
    web

9. ¿Qué son los Applets?

Son programas Java pensados para ser colocados dentro de una página web. Pueden ser
interpretados por cualquier navegador con capacidades Java. Estos programas se insertan
en las páginas usando una etiqueta especial (como también se insertan vídeos,
animaciones flash u otros objetos).

//Ejemplo
import java.awt.Graphics;
import javax.swing.*;

public class miApplet extends JApplet{

public void paint(Graphics g){
super.paint(g);
g.drawString("Usando Applets",25,25);

}
}
//en una página html colocar <applet code="miApplet.class"> </applet>

10. ¿Qué es un Hilo (Thread)?

En informática, se conoce como multitarea, la posibilidad de que una computadora
realice varias tareas a la vez. En realidad es una impresión (salvo en un equipo con
varios procesadores) que se consigue repartiendo tiempo y recursos entre distintos
procesos.

La palabra thread hace referencia a un flujo de control dentro de un programa
(también se le llama hilo). La capacidad que permiten los threads a un programa
estriba en que se pueden ejecutar más de un hilo a la vez.
Los hilos comparten los datos del programa (además pueden tener datos propios) y
esto hace que el control sea más dificultoso.

Como ejemplo de thread, está el recolector
de basura de Java que elimina los datos no deseados mientras el programa continúa con
su ejecución normal.
El uso de hilos es muy variado: animación, creación de servidores, tareas de segundo
plano, programación paralela,...

Estados de un Hilo:

  1. New (nuevo)
  2. Runnable (ejecutable)
  3. Running (ejecutando)
  4. Waiting/Blocked/Sleeping (esperando/bloqueado/durmiendo)
  5. Dead (muerto)
 //ejemplo tomado de SCJP
 
 import java.lang.*;
 
 public class usoHilo extends Thread{
 public static void main(String args[]){
 
 usoHilo hilo= new usoHilo();
 hilo.run();
 }
 
 public void run(){
 for(int i=1;i<3;i++){
 System.out.println(i+"..");
 }
 
 }
 }
 
 

11. ¿Qué es un Socket?

Los sockets son un sistema de comunicación entre procesos de diferentes máquinas de
una red. Más exactamente, un socket es un punto de comunicación por el cual un proceso puede
emitir o recibir información.

Los sockets han de ser capaces de utilizar el protocolo de streams
TCP (Transfer Contro Protocol) y el de datagramas UDP (User Datagram Protocol).

El paquete Java import java.net.*; proporciona una clase Socket, la cual
implementa una de las partes de la comunicación bidireccional entre un programa Java y otro
programa en la red. Usado en aplicaciones cliente-servidor

 //cliente
 
   Socket miCliente;
try {
miCliente = new Socket( "maquina",numeroPuerto );
} catch( IOException e ) {
System.out.println( e );
}



//servidor

Socket miServicio;
try {
miServicio = new ServerSocket( numeroPuerto );
} catch( IOException e ) {
System.out.println( e );
}

   

Diferencia entre Socktes y RMI (Remote
Method Invocation
)

  • Sockets:para aplicaciones de bajo nivel
  • RMI:para aplicaciones de alto nivel

12. ¿Para qué sirve RMI?

Sirve como mecanismo mediante el cual los objetos cliente y servidor en
una aplicación distribuida Java se comunican.

Una aplicación distribuida en java necesita:

  1. Localizar los objetos remotos: Mediante la facilidad rmiregistry de Java o pasando los objetos remotos como parámetros o
    valores de retorno en llamadas a métodos remotos
  2. Comunicarse con objetos remotos: RMI maneja todos los
    detalles de la comunicación. Para el programador la
    comunicación remota es igual a una invocación a un método
    local estándar
  3. Descarga de las clases de los objetos pasados como
    parámetros o valor de retorno:
    RMI proporciona los
    mecanismos necesarios para descargar el código de los
    objetos tanto remotos como locales pasados cómo parámetros
    o valor de retorno, así como transmitir sus datos.

//ejemplo
 
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;
public class mensaje extends UnicastRemoteObject implements Hola {
public mensaje() throws RemoteException {
super();
}
public String activaMensaje() throws RemoteException{
return "Mensaje: hola ";
}
}

La información es muy breve, pero creo que les puede servir de algo.

Más información:

Tutorial Java http://java.sun.com/docs/book.tutorial

Fundamentos Java http://developer.java.sun.com/developer/onlineTraining/Programming/BasicJava1/index.html

SCJP Sun Certified Programmer for Java

Especificación Java http://java.sun.com/docs/books/jls/html/index.html

Tutorial Hibernate: Hibernate

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de benek

Muy buen post!

¡Que buen post!

Servirá mucho de referencia a algunas de las preguntas que seguido vienen a hacer aquí.

Muy buen aporte.

Saludos.

Javier Ramírez Jr.
http://twitter.com/_benek

Imagen de jali

SCJP y SCJD

Hola! Me gustaria agregar un poco mas en este tema.

Algo muy importante en el examen... aprender a leer las preguntas.
Como tips:
a) Leer bien la pregunta verificando la sintaxis, buscar errores en tipos de dato o cast y como ultimo verificar la salida.
b) Escribir mucho y hacer muchos problemas(especialmente de generics e hilos)
c) marcar TODAS las preguntas que tengas dudas. Este tipo de preguntas las podras revisar antes de darle en Finish jeje.
d) recomiendo comprar Whizlabs(simulador de examenes) ya que 3 compañeros lo compramos (@iberck, alfredo(el que dio la conferencia de dispositivos bluetooth y yo) y los 3 pasamos.
e) NUNCA hacer mock exams hasta que hayas estudiado TODOS los puntos para la certificacion.
f) recomiendo tener un decompilador para verificar que es lo que hace el compilador en algunos casos(como enums, switch o cosas por el estilo)
e) Descansar y dedicarle algo de tiempo a esto.(Nosotros nos aventamos medio año estudiando 1 hora diaria por 3 dias a la semana aprox)
f) Leer preguntas en javaranch o por aqui
g) NUNCA TE QUEDES CON UNA DUDA
h) Hacer el examen en INGLES, las traducciones estan del asco jajaja y si no me creen. Pueden leer los subtitulos de las peliculas :)
NO HACER TRAMPA podras hacer tontos a los demas... pero nunca a ti mismo.
Otro factor a tomar en cuenta en la certificacion SCJD es que este esta dividido en 2 partes... una es el examen y otra es un proyecto, el cual si recuerdo bien... te envian un proyecto y tu debes hacer la arquitectura, diagramas y codificacion :]

En el proyecto, como bien mencionas, debes conocer Sockets, RMI, Swing(buen diseño), Para las BD(locks, jdbc), Archivos
aqui te podras dar una idea de las dudas para el proyecto a desarrollar

Saludos
PD para ver la pagina sobre la que estudiamos DAR CLICK AQUI!!!!! <

Imagen de gorlok

SWT no es parte de JFC

Quiero aclarar que SWT no es parte de JFC, y dudo mucho que se lo mencione en la certificación de Java, ya que no forma parte del estándar. Sin restarle ningún mérito a SWT, es una GUI alternativa a AWT/Swing.
JFC está conformado por AWT+SWING+Java2D http://en.wikipedia.org/wiki/Java_Foundation_Classes

¿En la certificación Java incluyen Struts, Spring e Hibernate? Me sorprende mucho, no puedo asegurarlo, pero creo que en la certificación de SUN (Oracle) solo cubre lo que estándar, como JSE, JEE y JME, y otras especificaciones del JCP, pero que yo sepa no hay nada de frameworks "extraños" al estándar como son Struts, Hibernate, Spring, SWT, etc. Pero si, por ejemplo, JPA que es parte de EJB3 en las specs de JEE5.

Creo que el artículo está bien intencionado, pero mezcla varias puntos, y no termino de entender a dónde está dirigido.

Imagen de ezamudio

Hibernate...

Bueno, la última versión de JPA y EJB está basada en algunas cosas de Hibernate, así que de manera indirecta ves un poquito de Hibernate, la parte que ya se volvió estándar en JEE.

Imagen de gorlok

Consejo

Que JPA y EJB3 haya tomado cosas de Hibernate, no significa que Hibernate sea parte del SCJP como se afirma, y no lo es. TopLink también implementa JPA y tampoco es parte de la SCJP. Hay bastante más errores y confusiones en el artículo de las que mencioné, solo espero que no tomen mal la crítica y pueda servir para revisarlo.
Agradezco el tiempo y esfuerzo dedicado al artículo y aprovecho para alentarlos a continuar con más, que el sitio está muy bueno. Pero personalmente creo que deberían revisar esta nota en particular, porque contiene varias inexactitudes y errores, y estando orientada a los novatos, puede terminar confundiendo más de lo que aclara. Éxitos.

Imagen de jali

SCJP?

Aqui se esta hablando en general de java... que menciona certificaciones? Si lo hace, pero lo que entendi(espero no regarla) es que se pretende que el lector vea que tanto conocimiento tiene de Java... no solo de las certificaciones.
En SCJP vienen 7 u 8 objetivos de POO, RegExp, IO, Threads, Garbage collector... etc

Saludos

Me faltó un poco de información

Voy a continuar con este tema

  • faltaron ejemplos
  • explicar contenidos de algunos temas (:()

Tal vez

Me base en lo que le pregunte a un profesor...el temario que pusé no se si sea el correcto, pero traté de buscar.. y coinciden algunos puntos

Imagen de sheldini29

Scjp

Pues el scjp es basico muy basico, yo quiero el el web componnet donde puedo , el web component es aun de la arquitectura de Java Standar o de La J2EE...seria de gran utilidad que me ayudaran con los temas...!! son un novaton pero tengo ganas de aprender..!!