initcomponents error java .net design object

java - error - Qué es un componente



initcomponents() error en java (6)

Escucho el podcast java posse, sobre esto a menudo hay discusión sobre los componentes (los componentes de la nota no son (claramente) objetos). Lamentan el hecho de que Java no tiene componentes, y el contraste con .NET sí lo tiene. Los componentes aparentemente hacen que desarrollar aplicaciones (no solo aplicaciones GUI) sea más fácil.

Puedo deducir de la discusión ciertas cualidades que tiene un componente, es algo que tiene que ver con el desacoplamiento (sustituir un componente por otro es solo una cuestión de fontanería). Tiene algo que ver con las propiedades, definitivamente tiene algo que ver con eventos y delegados.

Entonces a las preguntas:

. / ¿alguien puede explicarme qué es un componente? (y por qué los beans Java no son componentes).

./ ¿Alguien puede explicar cómo ayudan al desarrollo?

./ ¿Alguien puede explicar por qué java no los tiene si son tan útiles?


Depende de lo que quiere decir con "componente". El término puede significar muchas cosas diferentes en muchos contextos diferentes, por lo que puede ser confuso. Dicho esto, aquí está mi comprensión del tema:

Un componente es diferente de un objeto (aunque los objetos se utilizan a menudo para representar y construir componentes). La diferencia es un par de cosas:

  1. Los objetos tienden a ser simplemente "cosas" mientras que los componentes son actores. La diferencia es que un componente es parte de un proceso, mientras que un objeto representa algún tipo de idea abstracta.
  2. Los componentes ayudan a garantizar la reutilización del código y la capacidad de conexión porque son básicamente pequeños "subprogramas" (o, a veces, programas en sí mismos) que, idealmente, se pueden adaptar para funcionar bien con otros componentes.
  3. Tiende a ver los componentes más en sistemas de transmisión de mensajes "sin compartir" como Erlang o Kamaelia , principalmente porque esos tipos de marcos tienden a ser más adecuados para el diseño orientado a componentes.

Hay muchos buenos ejemplos de diseño orientado a componentes, pero mi primera opción sería UNIX. La idea básica detrás de UNIX es que se trata más de un conjunto de pequeños programas diseñados para trabajar juntos en lugar de estar formados por varios programas más monolíticos.


El componente de término es uno de los más ambiguos y usados ​​en exceso en OO.

La mayoría de las personas estaría de acuerdo en que un componente está compuesto por un grupo de clases, que colaboran para implementar una o más interfaces. Una de las clases asume el papel del "front-end", es decir, implementa la interfaz pero delega el trabajo a las otras clases dentro del grupo. Como dices, los componentes deberían ser reemplazables sin que el resto del sistema lo sepa.

Un gran ejemplo de una arquitectura basada en componentes fue COM. Es un gran ejemplo porque fue muy utilizado y rígidamente especificado. Pero tenga en cuenta que la necesidad de esta arquitectura se basa en la inflexibilidad del modelo de compilación y despliegue de C ++.

en Java puede hacer muchísimo a una clase sin romper la compatibilidad binaria con el resto del sistema. Entonces no hay tanta necesidad de construir arquitecturas rígidas basadas en componentes. Pero todo depende de cómo defina el término, por ejemplo, cualquier proyecto creado con inyección de dependencia podría contar como ''componente''.


El software viene en varias agrupaciones. Aquí están los fragmentos de Java.

  • Declaraciones.
  • Funciones de método. Múltiples declaraciones
  • Clase. Múltiples atributos y funciones de método.
  • Archivo. Una o más clases Una clase es la clase pública en el archivo, otras clases están ocultas en el archivo.
  • Paquete. Múltiples clases Estos forman una jerarquía.

"Componente", "Capa", "Nivel" y otras agrupaciones filosóficas son, generalmente, nocionales. El entorno VB COM tenía un formalismo para los componentes. Todos los demás los tratan como solo ideas.

Los frijoles son clases. ¿Puede ser una sola clase ser un componente? Tal vez. Un componente es generalmente un grupo de clases. A veces tan solo dos: una interfaz formal y una implementación.

Los componentes lo ayudan a enfocarse en una agrupación lógica de clases, paquetes, agrupaciones, etc.

Como un componente es teórico, cada idioma más o menos los tiene. Hay pocos formalismos de lenguaje para los componentes. No son realmente necesarios. Es una idea o un principio que utilizas para estructurar tu pensamiento.

Puede, con cierto cuidado, definir un enfoque de "componentes" con una interfaz y metadatos y muchas otras características.


No conozco los componentes .NET particularmente, pero desde Java POV, diría que un componente es una unidad funcional que debería tener un principio definido de interfaz / uso. Si bien Java no tiene componentes como concepto de lenguaje, existen componentes de IMHO en Java. Los componentes técnicos serían, por ejemplo:

  • EJB
  • Servlets

Los componentes funcionales serían, por ejemplo:

  • Actualización automática para una aplicación
  • Mecanismo de fórmula que permite cálculos en un modelo de datos

Los componentes arquitectónicos pueden ser archivos JAR o paquetes OSGi.

Por supuesto, siempre hay espacio para la interpretación;)


Software Engineering Radio tiene un episodio sobre exactamente este tema: http://se-radio.net/podcast/2008-02/episode-87-software-components

La idea general es que un componente de software puede describir cuáles son sus propias dependencias y servicios, en forma de metadatos. No sé por qué habrás oído que Java no tiene componentes, ya que puedes imaginar una arquitectura en Java donde los componentes se describen a sí mismos a través de metadatos. Supongo que es solo que la definición de la plataforma Java en sí misma no tiene realmente una arquitectura de componentes.

Actualización: De hecho, uno no necesita imaginar una arquitectura así porque, como señalaron otros, Java Beans o Servlets ciertamente podrían considerarse arquitecturas basadas en componentes.


Aunque en los inicios de Java la noción de componente estuvo muchas veces relacionada con los componentes de Gui, el sentido genérico de componente en la ingeniería de software va más allá de esa noción.

En pocas palabras, un componente es una pieza de software, que es reutilizable . Al igual que los ladrillos, los combinamos y los unimos para crear una aplicación completa. La información clave de los componentes de software en entornos modernos es Metadata , que describe el contenido del componente y permite la reutilización .

En 1996, el JDK 1.0 fue el primer entorno de tiempo de ejecución administrado que proporcionaba componentes con metadatos. En este caso, los componentes son archivos .class que contienen bytecodes y metadatos. Sin embargo, y según la Especificación de Java, un archivo .class solo contiene una definición de tipo . Entonces, para desplegar un conjunto de tipos como un componente, podemos usar un archivo jar que contenga varios archivos .class .

Por otro lado, en la plataforma .Net, que proporciona la misma idea de componentes reutilizables, un componente puede contener más de una definición de tipo. En este caso, un componente (también conocido como ensamblado en .Net) es un archivo .dll o .exe .