Trabalhando com Markdown em Java: bibliotecas, parsing e conversão

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

Recommendations