Versão em áudio do post Por que é divertido programar?, em que leio trechos do primeiro capítulo do livro O Mítico Homem-Mês, um clássico da Engenharia de Software.
Categoria: Programming
Hipsters.tech: Práticas de Orientação a Objetos
Menos Classpath Hell com módulos do Java 9
Digamos que você tem um código que, por reflexão, usa a classe Resolucao12
para chamar o método designacao
:
package br.gov.anvisa; import java.lang.reflect.Method; public class Main { public static void main(String[] args) throws Exception { Class classe = Class.forName("br.gov.anvisa.resolucoes.Resolucao12"); Object objeto = classe.newInstance(); Method metodo = classe.getMethod("designacao"); System.out.println(metodo.invoke(objeto)); } }
Não há dependência em compile time a essa classe Resolucao12
. Precisamos dela apenas em runtime. Continue lendo
Como usar JARs não modularizados em um módulo do Java 9?
Você resolveu usar Java 9 no seu projeto e criou um módulo:
module br.com.alexandreaquiles.projeto { }
Por padrão, todo módulo “puxa” o java.base
, que disponibiliza pacotes como java.lang
, java.math
, java.util
e java.io
.
Vamos dizer que seu código usa o JDBC. Pra poder ter acesso a interfaces como Connection
e PreparedStatement
, você precisa dizer que usa o módulo java.sql
:
module br.com.alexandreaquiles.projeto { requires java.sql; }
JARs não modularizados
Agora, digamos que o seu projeto usa a biblioteca commonmark, responsável por renderizar arquivos Markdown.
Os desenvolvedores dessa biblioteca não criaram um module-info.java
. Ou seja, o JAR do commonmark
não está modularizado.
O que preciso colocar no requires
pra usar classes dessa biblioteca no meu código?