sábado, 26 de enero de 2013

Seguridad informática

Seguridad informática

Es la disciplina que se ocupa de diseñar las normas, procedimientos, métodos y técnicas destinados a conseguir un sistema de información seguro y confiable.

Es el área de la informática que se enfoca en la protección de la infraestructura computacional y todo lo relacionado con ésta (incluyendo la información contenida). Para ello existen una serie de estándares, protocolos, métodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la información.

La seguridad informática comprende software, bases de datos, metadatos, archivos y todo lo que la organización valore (activo) y signifique un riesgo si ésta llega a manos de otras personas. Este tipo de información se conoce como información privilegiada o confidencial.

El concepto de seguridad de la información no debe ser confundido con el de “seguridad informática”, ya que este último sólo se encarga de la seguridad en el medio informático, pero la información puede encontrarse en diferentes medios o formas.


Objetivos

La seguridad informática está concebida para proteger los activos informáticos, entre los que se encuentran:
La infraestructura computacional: Es una parte fundamental para el almacenamiento y gestión de la información, así como para el funcionamiento mismo de la organización.

Las amenazas

Una vez que la programación y el funcionamiento de un dispositivo de almacenamiento  de la información se consideran seguras, todavía deben ser tenidos en cuenta las circunstancias "no informáticas" que pueden afectar a los datos, las cuales son a menudo imprevisibles o inevitables, de modo que la única protección posible es la redundancia y la descentralización.
Estos fenómenos pueden ser causados por el usuario, programas maliciosos, algún intruso, un siniestro o el personal interno de sistemas.


Tipos de amenaza

El hecho de conectar una red a un entorno externo nos da la posibilidad de que algún atacante pueda entrar en ella, con esto, se puede hacer robo de información o alterar el funcionamiento de la red. Sin embargo el hecho de que la red no sea conectada a un entorno externo no nos garantiza la seguridad de la misma. De acuerdo con el Computer Security Institute (CSI) de San Francisco aproximadamente entre 60 y 80 por ciento de los incidentes de red son causados desde adentro de la misma. Basado en esto podemos decir que existen 2 tipos de amenazas:

  • Amenazas internas: Generalmente estas amenazas pueden ser más serias que las externas por varias razones como son:
-Los usuarios conocen la red y saben cómo es su funcionamiento.
-Tienen algún nivel de acceso a la red por las mismas necesidades de su trabajo.
-Los IPS y Firewalls son mecanismos no efectivos en amenazas internas.

  • Amenazas externas: Son aquellas amenazas que se originan fuera de la red. Al no tener información certera de la red, un atacante tiene que realizar ciertos pasos para poder conocer qué es lo que hay en ella y buscar la manera de atacarla.


Los virus se pueden clasificar de la siguiente forma:

Virus residentes.
Virus de acción directa.
Virus de sobreescritura.
Virus de boot (bot_kill) o de arranque.
Virus de enlace o directorio.
Virus cifrados.
Virus polimórficos.
Virus multipartites.
Virus del Fichero.
Virus de FAT.


Auditoría de sistemas

AUDITORIA DE SISTEMAS DE INFORMACIÓN

Se define como un proceso sistemático que consiste en obtener y evaluar objetivamente evidencias sobre las afirmaciones relativas los actos y eventos de carácter económico; con el fin de determinar el grado de correspondencia entre esas afirmaciones y los criterios establecidos, para luego comunicar los resultados a las personas interesadas.



 La auditoría se clasifica en Auditoría Financiera y Operativa.

La auditoría financiera efectúa un examen sistemático de los estados financieros, los registros y las operaciones correspondientes, para determinar la observancia de los principios de contabilidad generalmente aceptados, de las políticas de la administración y de la planificación.

La auditoría operativa cae dentro de la definición general de auditoría y se define como:

"un examen sistemático de las actividades de una organización en relación con objetivos específicos, a fin de evaluar el comportamiento, señalar oportunidades de mejorar y generar recomendaciones para el mejoramiento o para potenciar el logro de objetivos".

 La auditoría de Sistemas, se encarga de llevar a cabo la evaluación de normas, controles, técnicas y procedimientos que se tienen establecidos en una empresa para lograr confiabilidad, oportunidad, seguridad y confidencialidad de la información que se procesa a través de los sistemas de información. La auditoría de sistemas es una rama especializada de la auditoría que promueve y aplica conceptos de auditoría en el área de sistemas de información.


OBJETIVOS ESPECIFICOS DE LA AUDITORIA DE SISTEMAS:

1. Participación en el desarrollo de nuevos sistemas:

         -evaluación de controles
         -cumplimiento de la metodología.

2. Evaluación de la seguridad en el área informática.

3. Evaluación de suficiencia en los planes de contingencia.

    4. Opinión de la utilización de los recursos informáticos.
         
5. Control de modificación a las aplicaciones existentes.
                 
6. Participación en la negociación de contratos con los proveedores.

7. Revisión de la utilización del sistema operativo y los programas utilitarios.
         
8. Auditoría de la base de datos.

9. Auditoría de la red de teleprocesos.

10. Desarrollo de software de auditoría.

Es el objetivo final de una auditoría de sistemas bien implementada, desarrollar software capaz de estar ejerciendo un control continuo de las operaciones del área de procesamiento de datos.


FINES DE LA AUDITORIA DE SISTEMAS:

1. Fundamentar la opinión del auditor interno (externo) sobre la confiabilidad de los sistemas de información.  

2. Expresar la opinión sobre la eficiencia de las operaciones en el área de TI.


PLANEACIÓN DE LA AUDITORÍA EN INFORMÁTICA

 Para hacer una adecuada planeación de la auditoría en informática, hay que seguir una serie de pasos previos que permitirán dimensionar el tamaño y características de área dentro del organismo a auditar, sus sistemas, organización y equipo.

En el caso de la auditoría en informática, la planeación es fundamental, pues habrá que hacerla desde el punto de vista de los dos objetivos:

Evaluación de los sistemas y procedimientos.

Evaluación de los equipos de cómputo.

Para hacer una planeación eficaz, lo primero que se requiere es obtener información general sobre la organización y sobre la función de informática a evaluar. Para ello es preciso hacer una investigación preliminar y algunas entrevistas previas, con base en esto planear el programa de trabajo, el cual tomará tiempo, costo, personal necesario y documentos auxiliares a solicitar o formular durante el desarrollo de la misma.


Microchip

Microchip

Un microchip, también conocido como chip o circuito integrado, es una pastilla pequeña de material semiconductor, de algunos milímetros cuadrados de área, sobre la que se fabrican circuitos electrónicos mediante fotolitografía y que está protegida dentro de un encapsulado de plástico o cerámica. El encapsulado en sí, posee conductores metálicos apropiados para hacer conexión entre la pastilla y un circuito impreso.


Solo ha trascurrido medio siglo desde que se inició su desarrollo y los circuitos integrados se han vuelto casi omnipresentes. Computadoras, teléfonos móviles y otras aplicaciones digitales son ahora partes de las sociedades modernas. La informática, las comunicaciones, la manufactura y los sistemas de transporte, incluyendo Internet, todos dependen de la existencia de los microchip. De hecho, muchos estudiosos piensan que la revolución digital causada por los chips es uno de los sucesos más significativos de la historia de la humanidad.


Existen al menos tres tipos de circuitos integrados:

·         Circuitos monolíticos: fabricados en un solo mono cristal, habitualmente de silicio.
·         Circuitos híbridos de capa fina: Muy similares a los circuitos monolíticos, pero  contienen componentes difíciles de fabricar con tecnología monolítica.
·         Circuitos híbridos de capa gruesa: Son diferentes de los circuitos monolíticos. De hecho suelen contener circuitos monolíticos sin cápsula, transistores, y diodos sobre un sustrato dieléctrico, interconectados con pistas conductoras. Todo ello se ensamblan, en cápsulas plásticas o metálicas, dependiendo de la disipación de energía calórica requerida.

Los circuitos integrados se pueden clasificar en:
·         SSI (Small Scale Integration) pequeño nivel: de 10 a 100 transistores
·         MSI (Medium Scale Integration) medio: 101 a 1.000 transistores
·         LSI (Large Scale Integration) grande: 1.001 a 10.000 transistores
·         VLSI (Very Large Scale Integration) muy grande: 10.001 a 100.000 transistores
·         ULSI (Ultra Large Scale Integration) ultra grande: 100.001 a 1.000.000 transistores
·         GLSI (Giga Large Scale Integration) giga grande: más de un millón de transistores


En cuanto a las funciones integradas, los circuitos se clasifican en dos grandes grupos:

Circuitos integrados analógicos.

Pueden constar desde simples transistores encapsulados juntos, sin unión entre ellos, hasta circuitos completos y funcionales, como amplificadores y osciladores.

Circuitos integrados digitales.

Pueden ser desde básicas puertas lógicas (AND, OR, NOT) hasta los más complicados microprocesadores o micro controladores.
Algunos son diseñados y fabricados para cumplir una función específica dentro de un sistema mayor y más complejo.


La idea de circuito integrado nace de la necesidad de reducir los circuitos eléctricos a uno mucho más sencillo y pequeño. Gracias a ellos, se evitaron la multitud de problemas que se daban a la hora de fabricar un circuito, como por ejemplo, que alguna de las miles de soldaduras que había que realizar estuviera defectuosa, o la reducción del espacio que ocupaban las válvulas de vacío, las cuales se vieron rápidamente obsoletas gracias a las mejoras que supuso la introducción de los circuitos integrados.

Sistemas Biométricos

Sistemas Biométricos

La biometría (proviene del griego “bios” = vida y “metron” = medida), es el estudio de métodos automáticos para el reconocimiento único de humanos basados en rasgos conductuales o rasgos físicos intrínsecos como la huella dactilar, en otras palabras, es la aplicación de técnicas matemáticas y estadísticas sobre los rasgos físicos o de conducta de un individuo, para su autentificación, es decir, “verificar” su identidad.


Las huellas dactilares, la retina, el iris, los patrones faciales o la geometría de la palma de la mano, representan ejemplos de características físicas (estáticas), mientras que entre los ejemplos de características del comportamiento se incluye la firma, el paso y el tecleo (dinámicas). La voz se considera una mezcla de características físicas y del comportamiento, pero todos los rasgos biométricos comparten aspectos físicos y del comportamiento.

En un sistema de Biometría típico, la persona se registra con el sistema cuando una o más de sus características físicas es obtenido, procesado por un algoritmo numérico, e introducida en una base de datos. Idealmente, cuando entra, casi todas sus características concuerdan; entonces cuando alguna otra persona intenta identificarse, no empareja completamente, por lo que el sistema no le permite el acceso. Las tecnologías actuales tienen tasas de acierto que varían ampliamente entre el 60 y 99,9%.



Las tasas de error anunciadas implican a veces elementos idiosincrásicos o subjetivos. Por ejemplo, un fabricante de sistemas biométricos fijó el umbral de aceptación alto, para reducir al mínimo las falsas aceptaciones; en la práctica, se permitían tres intentos, por lo que un falso rechazo se contaba sólo si los tres intentos resultaban fallidos (por ejemplo escritura, habla, etc.), las opiniones pueden variar sobre qué constituye un falso rechazo.

A pesar de estas dudas, los sistemas biométricos tienen un potencial para identificar a individuos con un grado de certeza muy alto. La prueba forense del ADN goza de un grado particularmente alto de confianza pública actualmente y la tecnología está orientándose al reconocimiento del iris, que tiene la capacidad de diferenciar entre dos individuos con un ADN idéntico.

Uno de los beneficios que otorga la tecnología biométrica es que hace que no sea necesario llevar una tarjeta o llave para acceder a un edificio. Las infraestructuras de grandes redes empresariales, las identificaciones en el gobierno, las transacciones bancarias seguras, y los servicios sociales y de salud, entre otros ámbitos, ya se benefician del uso de este tipo de verificaciones.



La utilización de un dispositivo biométrico permite que los costos de administración sean más pequeños, ya que sólo se debe realizar el mantenimiento del lector, y que una persona se encargue de mantener la base de datos actualizada. Otro beneficio: las características biométricas de una persona son intransferibles a otra.

Algunos tipos de sistemas biométricos:

Proceso de autentificación.
Reconocimiento de iris.
Sistema de reconocimiento facial.
Biometría vascular.

jueves, 17 de enero de 2013

Cibernética / Electrónica

Cibernética



Es la ciencia y rama de la matemática, encargada de estudiar los sistemas de comunicación y control tanto en los humanos como en las máquinas.


Mucha gente asocia la cibernética con la robótica y el concepto de cyborg, debido al uso que se le ha dado en algunas obras de ciencia ficción, pero desde un punto de vista estrictamente científico, la cibernética trata acerca de sistemas de control basados en la retroalimentación.


Biónica


Es la aplicación de soluciones biológicas a la técnica de los sistemas de arquitectura, ingeniería y tecnología moderna. Etimológicamente, la palabra viene del griego "bios"; que significa vida y el sufijo "´-ico" que significa "relativo a". Se podría decir, que la biónica es aquella rama de la cibernética que trata de simular el comportamiento de los seres vivos haciéndolos mejores en casi todas las ramas por medio de instrumentos mecánicos.


Las aplicaciones son inmensas y no solo limitadas a ampliar nuestras capacidades sensoriales. Algunas de estas áreas son:

La medicina, los audiovisuales, los diseños de productos, etc.




Robótica

Es la rama de la ciencia que estudia el diseño y construcción de máquinas capaces de desempeñar tareas realizadas por el ser humano.

Para mas información sobre robótica dirigirse al siguiente link: 

http://robotica-electiva1.blogspot.com/2012/11/la-robotica-por-luis-vinci.html


Electrónica


Es una rama de la física, que estudia y emplea sistemas cuyo funcionamiento se basa en la conducción y el control del flujo de los electrones u otras partículas cargadas eléctricamente. En otras palabras un sistema electrónico es un conjunto de circuitos que interactúan entre sí para obtener un resultado.



La electrónica desarrolla en la actualidad una gran variedad de tareas. Los principales usos de los circuitos electrónicos son el control, el procesado, la distribución de información, la conversión y la distribución de la energía eléctrica. Estos usos implican la creación o la detección de campos electromagnéticos y corrientes eléctricas. Entonces se puede decir que la electrónica abarca en general las siguientes áreas de aplicación:

  • Electrónica de control
  • Telecomunicaciones
  • Electrónica de potencia


martes, 23 de octubre de 2012

JAVA


JAVA

Es un lenguaje de programación de alto nivel orientado a objetos, desarrollado por James Gosling en 1995. El lenguaje en sí mismo toma mucha de su sintaxis de C, Cobol y Visual Basic, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. La memoria es gestionada mediante un recolector de basura.
Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.
La implementación original y de referencia del compilador, la máquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de software libre.
Entre diciembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre aunque la biblioteca de clases de paginas web comprendidas en las librerias de objetacion de objetos para ser compilados como aplicaciones comprimidas no estan totalmente acopladas de acuerdo con Sun que dice que se requiere un interprete para ejecutar los programas de Java.

Historia

Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.
El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas y finalmente se renombró a Java.
Es frecuentada por algunos de los miembros del equipo. Pero no está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus creadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo, Just Another Vague Acronym ("sólo otro acrónimo ambiguo más"). La hipótesis que más fuerza tiene es la que Java debe su nombre a un tipo de café disponible en la cafetería cercana, de ahí que el icono de java sea una taza de café caliente. Un pequeño signo que da fuerza a esta teoría es que los 4 primeros bytes (el número mágico) de los archivos.class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teorías, el nombre fue sacado al parecer de una lista aleatoria de palabras.


El lenguaje Java se creó con cinco objetivos principales:
1.    Debería usar el paradigma de la programación orientada a objetos.
2.   Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
3.   Debería incluir por defecto soporte para trabajo en red.
4.   Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
5.   Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.

Sintaxis

La sintaxis de Java se deriva en gran medida de C++. Pero a diferencia de éste, que combina la sintaxis para programación genérica, estructurada y orientada a objetos, Java fue construido desde el principio para ser completamente orientado a objetos. Todo en Java es un objeto (salvo algunas excepciones), y todo en Java reside en alguna clase (recordemos que una clase es un molde a partir del cual pueden crearse varios objetos).

Hola mundo

Aplicaciones autónomas

// Hola.java
 import javac.swing.JOptionPane;
public class Hola //Declara una clase llamada Hola, que es descendiente de la clase Object
{
//Entre llaves se declaran los atributos y métodos de la clase

    public static void main(String[] args)
    //public: indica que el método main()es público
    //void: indica que la función main() no devuelve ningún valor
    //El método main()debe aceptar siempre como parámetro un vector de strings
   {
        JOptionPane.showMessageDialog("Hola, mundo!");
    //Esta línea indica que se va a ejecutar el método JOptionPane(), encargado de mostrar
    //un valor a través de la salida estándar (en nuestro caso, un String)
    //Este método pertenece al atributo out

    }
}
Este ejemplo necesita una pequeña explicación.
§  Todo en Java está dentro de una clase, incluyendo programas autónomos.
§  El código fuente se guarda en archivos con el mismo nombre que la clase que contienen y con extensión “.java”. Una clase (class) declarada pública (public) debe seguir este convenio. En el ejemplo anterior, la clase es Hola, por lo que el código fuente debe guardarse en el fichero “Hola.java”
§  El compilador genera un archivo de clase (con extensión “.class”) por cada una de las clases definidas en el archivo fuente. Una clase anónima se trata como si su nombre fuera la concatenación del nombre de la clase que la encierra, el símbolo “$”, y un número entero.
§  Los programas que se ejecutan de forma independiente y autónoma, deben contener el método”main()”.
§  La palabra reservada”void” indica que el método main no devuelve nada.
§  El método main debe aceptar un array de objetos tipo String. Por acuerdo se referencia como ”args”, aunque puede emplearse cualquier otro identificador.
§  La palabra reservada ”static” indica que el método es un método de clase, asociado a la clase en vez de una instancias de la misma. El método main debe ser estático o ’’de clase’’.
§  La palabra reservada public significa que un método puede ser llamado desde otras clases, o que la clase puede ser usada por clases fuera de la jerarquía de la propia clase. Otros tipos de acceso son ”private” o ”protected”.
§  La utilidad de impresión (en pantalla por ejemplo) forma parte de la biblioteca estándar de Java: la clase ‘’’System’’’ define un campo público estático llamado ‘’’out’’’. El objetoout es una instancia de ‘’’PrintStream’’’, que ofrece el método ‘’’println (String)’’’ para volcar datos en la pantalla (la salida estándar).
§  Las aplicaciones autónomas se ejecutan dando al entorno de ejecución de Java el nombre de la clase cuyo método main debe invocarse. Por ejemplo, una línea de comando (en Unix o Windows) de la forma java –cp . Hola ejecutará el programa del ejemplo (previamente compilado y generado “Hola.class”). El nombre de la clase cuyo método main se llama puede especificarse también en el fichero “MANIFEST” del archivo de empaquetamiento de Java (.jar).

Applets

Las applet Java son programas incrustados en otras aplicaciones, normalmente una página Web que se muestra en un navegador.

// Hello.java
import javax.swing.JApplet;
import java.awt.Graphics;

public class Hello extends JApplet {

       public void paint(Graphics g) {
        g.drawString("Hola, mundo!", 65, 95);
    }

}
 <!-- Hola.html -->
<html>
  <head>
    <title>Applet Hola Mundo</title>
  </head>
  <body>
    <applet code="Hola.class" width="200" height="200">
    </applet>
  </body>
</html>
Actualmente HTML 5 ha eliminado el uso de la etiqueta <applet>. Pero todavía existe la forma de usarlo en HTML5. (Texto en inglés) Java Applets in HTML5.
La sentencia import indica al compilador de Java que incluya las clases java.applet. Applet y java.awt. Graphics, para poder referenciarlas por sus nombres, sin tener que anteponer la ruta completa cada vez que se quieran usar en el código fuente.
La clase Hola extiende (extends) a la clase Applet, es decir, es una subclase de ésta. La clase Applet permite a la aplicación mostrar y controlar el estado del applet. La clase Applet es un componente del AWT (Abstract Window Toolkit), que permite al applet mostrar una interfaz gráfica de usuario o GUI (Graphical User Interface), y responder a eventos generados por el usuario.
La clase Hola sobrecarga el método paint (Graphics) heredado de la superclase contenedora (Applet en este caso), para acceder al código encargado de dibujar. El métodopaint() recibe un objeto Graphics que contiene el contexto gráfico para dibujar el applet. El método paint() llama al método drawString (String, int, int) del objeto 

Servlets

Los servlets son componentes de la parte del servidor de Java EE, encargados de generar respuestas a las peticiones recibidas de los clientes.

// Hola.java
import java.io.IOException;
import javax.servlet.*;

public class Hola extends GenericServlet
{
    public void service(ServletRequest request, ServletResponse response)
        throws ServletException, IOException
    {
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        pw.println("Hola, mundo!");
        pw.close();
    }
}
Las sentencias import indican al compilador de Java la inclusión de todas las clases públicas e interfaces de los paquetes java.io y javax.servlet en la compilación.
La clase Hola extiende (extends), es heredera de la clase GenericServlet. Esta clase proporciona la interfaz para que el servidor le pase las peticiones al servlet y el mecanismo para controlar el ciclo de vida del servlet.
La clase Hola sobrecarga el método service (ServletRequest, ServletResponse), definido por la interfaz servlet para acceder al manejador de la petición de servicio. El métodoservice() recibe un objeto de tipo ServletRequest que contiene la petición del cliente y un objeto de tipo ServletResponse, usado para generar la respuesta que se devuelve al cliente. El método service() puede lanzar (throws) excepciones de tipo ServletException e IOException si ocurre algún tipo de anomalía.
El método setContentType (String) en el objeto respuesta establece el tipo de contenido MIME a "text/html", para indicar al cliente que la respuesta a su petición es una página con formato HTML. El método getWriter() del objeto respuesta devuelve un objeto de tipo PrintWriter, usado como una tubería por la que viajarán los datos al cliente. El métodoprintln (String) escribe la cadena "Hola, mundo!" en la respuesta y finalmente se llama al método close() para cerrar la conexión, que hace que los datos escritos en la tubería o stream sean devueltos al cliente.
Aplicaciones con ventanas

Swing es la biblioteca para la interfaz gráfica de usuario avanzada de la plataforma Java SE.

 // Hola.java
 import javax.swing.*;

 public class Hola extends JFrame {
     Hola() {
         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
         add(new JLabel("Hola, mundo!"));
         pack();
     }

     public static void main(String[] args) {
         new Hola().setVisible(true);
     }
 }
Las instrucciones import indican al compilador de Java que las clases e interfaces del paquete javax.swing se incluyan en la compilación.
La clase Hola extiende (extends) la clase javax.swing.JFrame, que implementa una ventana con una barra de título y un control para cerrarla.
El constructor Hola() inicializa el marco o frame llamando al método setDefaultCloseOperation (int) heredado de JFrame para establecer las operaciones por defecto cuando el control de cierre en la barra de título es seleccionado al valor WindowConstants.DISPOSE_ON_CLOSE. Esto hace que se liberen los recursos tomados por la ventana cuando es cerrada, y no simplemente ocultada, lo que permite a la máquina virtual y al programa acabar su ejecución. A continuación se crea un objeto de tipo JLabel con el texto "Hola, mundo!", y se añade al marco mediante el método add (Component), heredado de la clase Container. El método pack(), heredado de la clase Window, es invocado para dimensionar la ventana y distribuir su contenido.
El método main() es llamado por la JVM al comienzo del programa. Crea una instancia de la clase Hola y hace la ventana sea mostrada invocando al método setVisible (boolean) de la superclase (clase de la que hereda) con el parámetro a true. Véase que, una vez el marco es dibujado, el programa no termina cuando se sale del método main(), ya que el código del que depende se encuentra en un hilo de ejecución independiente ya lanzado, y que permanecerá activo hasta que todas las ventanas hayan sido destruidas.