15/09/2025
Eclipse ha sido, durante años, una de las plataformas de desarrollo integrado (IDE) más robustas y versátiles para programadores, especialmente en el ecosistema Java. Su capacidad de personalización a través de plugins y su potente conjunto de herramientas lo convierten en una opción preferida para proyectos de cualquier escala. Sin embargo, para aprovechar al máximo su potencial, es fundamental conocer sus atajos de teclado y entender cómo sus plugins pueden optimizar nuestro flujo de trabajo diario. Este artículo se sumergirá en aspectos cruciales como el manejo de comentarios, la visualización del código y, en particular, explorará en detalle un plugin que ha ganado gran relevancia en el mapeo de objetos: MapStruct.

Comentando Código en Eclipse: Un Impulso a la Productividad
Comentar el código es una práctica esencial en el desarrollo de software. No solo mejora la legibilidad para otros desarrolladores (o para tu yo futuro), sino que también permite deshabilitar temporalmente secciones de código sin eliminarlas. Eclipse ofrece atajos de teclado muy convenientes para esta tarea, lo que acelera significativamente el proceso.
Atajos para Comentar y Descomentar Líneas
La capacidad de comentar y descomentar rápidamente líneas o bloques de código es una de esas pequeñas mejoras que suman una gran diferencia en la productividad diaria. Dependiendo de tu sistema operativo y del tipo de comentario que necesites, Eclipse te ofrece diversas opciones:
- Para Windows/Linux:
- Comentar/Descomentar una sola línea o una selección de líneas (Java): Utiliza
Ctrl + /(barra inclinada). Este atajo es increíblemente útil, ya que alterna entre comentar y descomentar, aplicando comentarios de una sola línea (//). - Descomentar un bloque de múltiples líneas (Java): Para comentarios de bloque (
/* ... */), puedes usarCtrl + Shift + \(barra invertida). Este atajo es específico para descomentar bloques que fueron comentados con este formato.
- Comentar/Descomentar una sola línea o una selección de líneas (Java): Utiliza
- Para Mac/OS X:
- Comentar/Descomentar una sola línea o una selección de líneas: La combinación es
⌘ + /. Al igual que en Windows/Linux, este atajo es un alternador.
- Comentar/Descomentar una sola línea o una selección de líneas: La combinación es
Además de estos atajos específicos para comentarios, Eclipse cuenta con una ventana que lista todos los atajos de teclado principales. Puedes acceder a ella rápidamente presionando Ctrl + Shift + L (en Windows/Linux) o ⌘ + Shift + L (en Mac). Esta es una herramienta invaluable para descubrir nuevas combinaciones y personalizar tu experiencia.
Visualizando Líneas de Código en Eclipse
Una de las preguntas más comunes entre los usuarios de IDEs es cómo visualizar las líneas de código. Aunque la información proporcionada menciona un "Plugin Eclipse Metrics" para el conteo de líneas, es importante aclarar que la visualización de los números de línea es una característica estándar y fundamental de Eclipse, no algo que requiera un plugin adicional para su funcionalidad básica.
Activando los Números de Línea
Para ver los números de línea junto a tu código en el editor de Eclipse, sigue estos sencillos pasos:
- Abre cualquier archivo de código en el editor de Eclipse.
- Haz clic derecho en la barra lateral gris a la izquierda del área de texto (donde aparecerían los números de línea o los puntos de interrupción).
- En el menú contextual que aparece, selecciona la opción "Show Line Numbers" (Mostrar números de línea).
Al activarlo, verás una columna numerada en el borde izquierdo de tu editor, lo que facilita la navegación y la referencia a líneas específicas del código. Si bien el "Plugin Eclipse Metrics" podría ofrecer métricas más avanzadas sobre la complejidad y el conteo de líneas de código a nivel de proyecto, la visualización directa de los números de línea en el editor es una configuración básica que todo desarrollador debe conocer.
Optimizando el Desarrollo con Plugins de Eclipse: MapStruct en Detalle
La verdadera fuerza de Eclipse reside en su extensibilidad a través de plugins. Estas herramientas de terceros pueden transformar el IDE en una estación de trabajo altamente especializada para casi cualquier tarea de desarrollo. Una de estas iniciativas que ha ganado mucha tracción en los últimos años, especialmente en el ámbito del desarrollo Java, es MapStruct.
¿Qué es MapStruct?
MapStruct es un procesador de anotaciones de código abierto, diseñado para simplificar el mapeo de objetos entre diferentes capas de una aplicación, como de una capa de servicio a una capa de persistencia o viceversa. Nació en 2013 y alcanzó su versión estable en 2015. Su popularidad se debe a su simplicidad de uso: mediante anotaciones, MapStruct es capaz de generar código de mapeo en tiempo de compilación, eliminando la necesidad de escribir manualmente estas tediosas transformaciones.

Ventajas Clave de MapStruct
MapStruct ofrece varias ventajas significativas que lo hacen una opción atractiva para proyectos Java:
- Rápido y Seguro: Genera código de mapeo optimizado que utiliza invocaciones directas de métodos en lugar de reflexión, lo que resulta en un rendimiento superior y seguridad de tipo en tiempo de compilación.
- Código Autocontenido: No tiene dependencias en tiempo de ejecución. El código generado es completamente autocontenido.
- Detección de Errores Temprana: Informa de posibles errores en los mapeos en tiempo de compilación, lo que permite corregirlos antes de que lleguen a producción.
- Fácilmente Debuggeable: Dado que genera código Java plano, los mapeos son fáciles de depurar utilizando las herramientas estándar de depuración.
- Reduce Código Boilerplate: Elimina la necesidad de escribir repetidamente código de mapeo manual, lo que resulta en un código más limpio y menos propenso a errores.
Configuración e Integración de MapStruct
MapStruct requiere al menos Java 1.6 o posterior y funciona en tiempo de compilación con gestores de construcción como Maven, Gradle o Ant.
Configuración para Maven
Si tu proyecto utiliza Maven, debes añadir la dependencia de MapStruct en tu pom.xml:
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <!-- OR use this with Java 8 and beyond: <artifactId>mapstruct-jdk8</artifactId> --> <version>${org.mapstruct.version}</version> </dependency> </dependencies>Adicionalmente, dado que MapStruct realiza los mapeos en tiempo de compilación, necesitas configurar el plugin maven-compiler-plugin para que procese las anotaciones:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <annotationProcessorPaths> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>Configuración para Gradle
Para proyectos Gradle, la configuración es similar:
dependencies { ... compile 'org.mapstruct:mapstruct:1.3.0.Final' // OR use this with Java 8 and beyond: org.mapstruct:mapstruct-jdk8:... annotationProcessor 'org.mapstruct:mapstruct-processor:1.3.0.Final' testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.3.0.Final' // if you are using mapstruct in test code }Configuración para IDEs (Eclipse e IntelliJ)
Para que tu IDE reconozca y trabaje correctamente con MapStruct, es posible que necesites asegurar la presencia de ciertos plugins o configuraciones:
- Eclipse: Es fundamental tener el plugin
m2e_aptinstalado y habilitado. Este plugin asegura que el procesador de anotaciones de Maven (y por ende MapStruct) funcione correctamente dentro del entorno de Eclipse. - IntelliJ IDEA: A partir de la versión 2018.2, IntelliJ tiene soporte mejorado para procesadores de anotaciones. Debes asegurarte de que la opción "Build, Execution, Deployment > Compiler > Annotation Processors" esté activada.
MapStruct en Acción: Ejemplos Prácticos
En muchos proyectos modernos, se utilizan los "Data Transfer Objects" (DTOs) para aislar los objetos de negocio de los objetos que solo almacenan datos para su transporte. MapStruct brilla en escenarios donde la transformación de DTOs entre capas es una tarea recurrente.
Mapeo Básico
Consideremos un ejemplo simple. Supongamos que tenemos dos objetos, InventoryGetServiceIDTO (entrada) y PersistenceMongoFindInventoryIDTO (salida), y queremos mapear propiedades con nombres idénticos. Con MapStruct, solo necesitas definir una interfaz y anotarla con @Mapper:
@Mapper public interface InventoryServiceMapper { PersistenceMongoFindInventoryIDTO toPersistenceMongoFindInventoryIDTO(InventoryGetServiceIDTO idto); }En tiempo de compilación, MapStruct generará automáticamente la implementación de esta interfaz. El código generado será similar a esto, utilizando llamadas de método directas para la asignación:
@Generated( value = "org.mapstruct.ap.MappingProcessor" ) @Component public class InventoryServiceMapperImpl implements InventoryServiceMapper { @Override public PersistenceMongoFindInventoryIDTO toPersistenceMongoFindInventoryIDTO(InventoryGetServiceIDTO idto) { if ( idto == null ) { return null; } PersistenceMongoFindInventoryIDTO persistenceMongoFindInventoryIDTO = new PersistenceMongoFindInventoryIDTO(); persistenceMongoFindInventoryIDTO.setItemId( idto.getItemId() ); persistenceMongoFindInventoryIDTO.setProvider( idto.getProvider() ); persistenceMongoFindInventoryIDTO.setShipNode( idto.getShipNode() ); persistenceMongoFindInventoryIDTO.setSupplyType( idto.getSupplyType() ); persistenceMongoFindInventoryIDTO.setPublished( idto.getPublished() ); persistenceMongoFindInventoryIDTO.setOrganizationCode( idto.getOrganizationCode() ); return persistenceMongoFindInventoryIDTO; } }Mapeos Personalizados con @Mappings
¿Qué sucede cuando los nombres de las propiedades no coinciden, o cuando necesitas ignorar campos o asignar valores por defecto? MapStruct provee la anotación @Mappings (y @Mapping dentro de ella) para una personalización profunda:
@Mappings({ @Mapping(source = "itemId", target = "persistenceItemId"), @Mapping(target = "supplyType", ignore = true), @Mapping(target = "size", defaultValue = "10") }) PersistenceMongoFindInventoryIDTO toPersistenceMongoFindInventoryIDTO(InventoryGetServiceIDTO idto);En este ejemplo, itemId del origen se mapea a persistenceItemId en el destino, supplyType es ignorado, y size recibe un valor por defecto si no se especifica.
Mapeo de Enumerados con @ValueMappings
MapStruct también simplifica el mapeo entre enumerados, incluso cuando sus valores no coinciden directamente:
@ValueMappings({ @ValueMapping(source = "EXTRA", target = "SPECIAL"), @ValueMapping(source = "STANDARD", target = "DEFAULT"), @ValueMapping(source = "NORMAL", target = "DEFAULT") }) ExternalOrderType orderTypeToExternalOrderType(OrderType orderType);Modelos de Componentes (Component Models)
Puedes definir cómo MapStruct genera la implementación de tu mapper a través del atributo componentModel de la anotación @Mapper. Esto es útil para integrar tus mappers con frameworks de inyección de dependencia:
| Component Model | Descripción |
|---|---|
default | No utiliza un modelo de componente. Los mappers se instancian a través de Mappers.getMapper(Class). |
cdi | El mapper generado es un bean CDI de ámbito de aplicación y se puede obtener a través de la anotación @Inject. |
spring | El mapper generado es un bean de Spring y se obtiene a través de la anotación @Autowired. |
jsr330 | El mapper generado se anota con @javax.inject.Named y @Singleton, y puede ser recuperado a través de @Inject. |
Pre y Post Procesamiento con @BeforeMapping y @AfterMapping
Una característica muy potente es la capacidad de ejecutar lógica personalizada antes o después de un mapeo. Esto es posible gracias a las anotaciones @BeforeMapping y @AfterMapping:
@AfterMapping void fillShippingMethod(LineItemRQRType lineItemRQ, @MappingTarget SplitLine splitLine) { splitLine.getSplitKey().setShippingMethod(shippingMethodType.getByCode(lineItemRQ.getShippingMethod())); }Este ejemplo muestra cómo se puede manipular el objeto destino (splitLine) después de que MapStruct haya realizado su mapeo automático.
Además de estas funcionalidades, MapStruct ofrece opciones para el manejo de nulos, estrategias de excepciones, mapeo de listas y es compatible con Lombok y Streams de Java 8, lo que lo convierte en una herramienta increíblemente flexible y potente.
Preguntas Frecuentes (FAQ)
¿Cómo puedo activar los números de línea en el editor de Eclipse?
Simplemente haz clic derecho en la barra gris a la izquierda del área de texto en tu editor de código y selecciona "Show Line Numbers" (Mostrar números de línea). Esta opción es una característica estándar de Eclipse y no requiere plugins adicionales.

Mis atajos de teclado para comentar no funcionan, ¿qué puedo hacer?
Primero, asegúrate de que estás utilizando el atajo correcto para tu sistema operativo y tipo de comentario. Si persisten los problemas, verifica la configuración de tus atajos de teclado en Eclipse yendo a "Window > Preferences > General > Keys". Aquí puedes buscar "Toggle Comment" o "Block Comment" para ver o reconfigurar los atajos. También, asegúrate de que no haya otros plugins o aplicaciones que estén sobrescribiendo esos atajos a nivel de sistema.
¿MapStruct es compatible con cualquier versión de Java?
MapStruct requiere al menos Java 1.6 o posterior. Las versiones más recientes de MapStruct ofrecen soporte mejorado para Java 8 y posteriores, incluyendo compatibilidad con Streams y otras características modernas del lenguaje.
¿MapStruct es solo para proyectos Java?
Sí, MapStruct es un procesador de anotaciones diseñado específicamente para el lenguaje de programación Java. Genera código Java para realizar los mapeos de objetos.
Conclusión
Dominar una herramienta como Eclipse va más allá de escribir código; implica conocer sus atajos, configurar sus vistas para una óptima legibilidad y, crucialmente, integrar plugins que automaticen y simplifiquen tareas repetitivas. Los atajos para comentar y descomentar líneas, junto con la configuración de los números de línea, son pequeños detalles que mejoran enormemente la experiencia del usuario.
Por otro lado, plugins como MapStruct demuestran el poder de la extensibilidad de Eclipse. MapStruct no solo ahorra una cantidad considerable de tiempo de codificación manual en el mapeo de objetos, sino que también mejora la legibilidad y reduce la probabilidad de errores en tu código. Su enfoque en la generación de código en tiempo de compilación y su amplia gama de opciones de personalización lo convierten en una herramienta indispensable para cualquier proyecto Java moderno. Al integrar estas prácticas y herramientas en tu flujo de trabajo, transformarás tu experiencia de desarrollo en Eclipse, haciéndola más eficiente, robusta y, en última instancia, más placentera.
Si quieres conocer otros artículos parecidos a Dominando Eclipse: Atajos, Vistas y Plugins Esenciales puedes visitar la categoría Librerías.
