SDK vs. JDK
Um Kit de Desenvolvimento de Software (também conhecido como SDK ou devkit) é um conjunto de ferramentas de desenvolvimento. Ele permite que aplicativos sejam criados para um determinado pacote de software, estrutura de software, plataforma de hardware, sistema de computador, console de videogame, sistema operacional ou qualquer plataforma semelhante a qualquer uma das listadas. Os SDKs variam de algo tão simples quanto uma API, da maneira que alguns arquivos fazem interface com uma linguagem de programação específica ou incluem hardware sofisticado para se comunicar com um determinado sistema incorporado. Algumas das ferramentas mais comuns encontradas em um SDK incluem auxiliares de depuração e utilitários similares apresentados em um ambiente de desenvolvimento integrado (ou IDE).
O Java Development Kit (ou JDK) é o SDK mais amplamente usado no mercado. Desenvolvido pela Sun Microsystems para desenvolvedores de Java, o JDK é um software gratuito lançado sob a GNU General Public License (ou GPL). Há uma infinidade de componentes que compõem o JDK. Esses componentes são uma seleção de ferramentas de programação. Eles incluem, mas não estão limitados a java, o carregador para todos os aplicativos Java que interpretam e são capazes de interpretar os arquivos de classe gerados pelo compilador javac; javac, que é o compilador que converte o código-fonte em código de bytes Java; javaws, que é o iniciador do Java Web Start para aplicativos JNLP; jmap, que é um utilitário experimental que gera mapa de memória para Java e é capaz de imprimir mapas de memória de objetos compartilhados ou empilhar detalhes de memória de um determinado processo; e VisualVM, que é uma ferramenta visual que integra várias ferramentas JDK da linha de comandos e recursos leves de desempenho e perfil de memória.
Os SDKs incluem código de amostra e notas técnicas ou outra documentação que suporta esse código para ajudar no esclarecimento de pontos do material de referência principal. Geralmente, um engenheiro de software recebe o SDK de um desenvolvedor de destino. Assim, o SDK é baixado facilmente da Internet. Muitos SDKs são gratuitos, principalmente para incentivar os desenvolvedores a usar o sistema ou o idioma. Eles podem ter licenças anexadas para torná-las inadequadas para a criação de software que se destina a ser desenvolvido sob uma licença incompatível. Um SDK desenvolvido para um complemento do SO (QuickTime para Mac OS, por exemplo) pode incluir o próprio complemento real do software para uso em desenvolvimento - se não for para ser redistribuído.
O JDK é um subconjunto estendido de um SDK. A Sun reconhece, de acordo com a terminologia, que o JDK é o subconjunto do SDK responsável pela gravação e execução de programas Java. O que resta desse SDK é composto de software extra (servidores de aplicativos, depuradores e documentação).
Resumo:
1. Um SDK é um conjunto de ferramentas de desenvolvimento que permitem a criação de aplicativos para determinados pacotes ou plataformas de software; o JDK é o SDK mais amplamente usado e é uma extensão do SDK responsável por escrever e executar programas Java.
2. Um SDK inclui código de amostra e notas técnicas ou outra documentação de suporte; o JDK inclui componentes que são uma seleção de ferramentas de programação.