Trabalhando com Markdown em Java: bibliotecas, ferramentas e exemplos de código
Markdown é uma linguagem de marcação leve, amplamente utilizada para formatar texto em documentação, arquivos README, mensagens em fóruns e blogs. Em Java, existem várias bibliotecas poderosas que permitem fazer parsing de Markdown, convertê-lo para HTML, PDF ou outros formatos, além de criar editores interativos. Neste artigo, vamos detalhar as principais ferramentas, seus recursos e fornecer exemplos práticos de código.
Por que fazer parsing de Markdown em Java?
Java continua sendo uma das linguagens mais populares para desenvolvimento back-end. A integração do Markdown em aplicações Java permite:
- Gerar automaticamente conteúdo HTML a partir de arquivos Markdown (por exemplo, para documentação).
- Criar editores WYSIWYG com suporte a Markdown.
- Importar e exportar dados no formato Markdown.
- Implementar a exibição segura de conteúdo do usuário (sanitização de HTML).
Principais bibliotecas para trabalhar com Markdown em Java
1. commonmark-java
Implementação oficial da especificação CommonMark para Java. Esta biblioteca se destaca pelo alto desempenho, conformidade rigorosa com o padrão e tamanho mínimo. É ideal para projetos que exigem parsing confiável e previsível.
Instalação (Maven):
<dependency> <groupId>org.commonmark</groupId> <artifactId>commonmark</artifactId> <version>0.21.0</version></dependency>Exemplo de uso:
import org.commonmark.node.*;import org.commonmark.parser.Parser;import org.commonmark.renderer.html.HtmlRenderer;
public class CommonMarkExample { public static void main(String[] args) { Parser parser = Parser.builder().build(); HtmlRenderer renderer = HtmlRenderer.builder().build();
String markdown = "# Título
Este é um texto **negrito** e *itálico*."; Node document = parser.parse(markdown); String html = renderer.render(document);
System.out.println(html); // Saída: <h1>Título</h1> // <p>Este é um <strong>negrito</strong> texto e <em>itálico</em>.</p> }}2. Flexmark-java
Flexmark é uma biblioteca extensível que suporta CommonMark, GFM (GitHub Flavored Markdown) e várias extensões adicionais (tabelas, notas de rodapé, links automáticos, emoji, etc.). É ideal para projetos complexos com requisitos não padronizados.
Instalação (Gradle):
implementation 'com.vladsch.flexmark:flexmark-all:0.64.8'Exemplo com extensão de tabelas:
import com.vladsch.flexmark.html.HtmlRenderer;import com.vladsch.flexmark.parser.Parser;import com.vladsch.flexmark.ext.tables.TablesExtension;import com.vladsch.flexmark.util.data.MutableDataSet;
import java.util.Arrays;
public class FlexmarkExample { public static void main(String[] args) { MutableDataSet options = new MutableDataSet(); options.set(Parser.EXTENSIONS, Arrays.asList(TablesExtension.create()));
Parser parser = Parser.builder(options).build(); HtmlRenderer renderer = HtmlRenderer.builder(options).build();
String markdown = "| Coluna 1 | Coluna 2 ||----------|----------|| Célula 1 | Célula 2 |"; String html = renderer.render(parser.parse(markdown));
System.out.println(html); // Saída: <table>...</table> }}3. Pegdown
Uma das bibliotecas mais antigas para Java. Pegdown usa um parser PEG e suporta várias extensões, mas nos últimos anos tem ficado atrás em desempenho em comparação com commonmark-java e flex
Também na biblioteca
Programação Reativa em Java: bibliotecas Project Reactor e RxJava
Filas de Tarefas em Java: ExecutorService e ThreadPoolExecutor