C/C++ para desenvolvedores Java - Java Magazine 85
Vamos descer alguns degraus das costumeiras linguagens de alto-nível da JVM, e examinar a programação com código nativo, integrado à JVM através da JNI – ou da JNA, alternativa mais moderna e muito mais produtiva.
ArtigosJavaC/C++ para desenvolvedores Java - Java Magazine 85
Vamos descer alguns degraus das costumeiras linguagens de
alto-nível da JVM, e examinar a programação com código nativo, integrado à JVM
através da JNI – ou da JNA, alternativa mais moderna e muito mais produtiva.
Para que serve:
Com o avanço do desempenho das JVMs, hoje em dia é raro
precisarmos de código nativo por motivo de desempenho. Mas isso ainda acontece,
embora a decisão já não seja tão simples. Com maior frequência, precisamos de
código nativo por outros motivos, como acesso a bibliotecas legadas ou a
serviços do sistema operacional que não possuem API Java equivalente.
Em que situação o tema é útil:
Neste artigo, guiaremos o leitor pelo suporte do Eclipse e
NetBeans para desenvolvimento nativo, através dos seus plug-ins para C/C++.
Daremos também uma introdução atualizada à JNI (Java Native Interface), e
também à JNA, uma biblioteca open source que torna a programação JNI muito mais
fácil, segura e produtiva. Também examinaremos os custos de desempenho e outros
aspectos do acesso ao código nativo.
Este artigo desvia um pouco da nossa linguagem favorita, adentrando
pelo mundo do C e C++ ou, como diria qualquer fã do Java: afundando o pé na
lama do C e C++. Afinal, estas linguagens precedem Java, e foram substituídas
por Java (e outras linguagens modernas) para muitos projetos, por bons motivos:
Java é mais portável, produtiva e segura, entre várias outras qualidades.
Mas nenhuma linguagem ou plataforma é ideal para tudo; C/C++
continuam sendo utilizadas para muitos tipos de desenvolvimento. Mesmo hoje,
não é raro que um desenvolvedor, ou uma empresa que trabalha primariamente com
Java, precise de uma “pitada” de C/C++, por vários motivos:
•
Dar manutenção em algum legado;
•
Fazer integração entre projetos Java com alguma
biblioteca ou legado C/C++;
•
Acessar APIs e recursos da plataforma nativa,
que talvez não tenham API Java correspondente;
•
Otimização: bem mais raro hoje em dia do que no
passado, mas ainda há casos onde reescrever algum código Java em C/C++ pode
proporcionar ganhos de desempenho importantes;
Eu não conheço nenhuma estatística que informe quantos
leitores da JM, ou desenvolvedores Java em geral, já tiveram alguma dessas
necessidades. No entanto, todos os principais IDEs para Java possuem plug-ins
que dão suporte ao desenvolvimento em C/C++. Os IDEs Java mais maduros há
tempos se tornaram verdadeiros “faz-tudo” multilinguagem, mas a maioria das
linguagens suportadas geram bytecode para a JVM: Groovy, JRuby, Scala, JavaFX
Script etc. As linguagens C/C++ são uma grande exceção; uma exceção importante
o bastante para merecer hospedagem especial em IDEs normalmente dedicados à
plataforma Java.
Neste artigo, vamos examinar o desenvolvimento em C/C++ do
ponto de vista do desenvolvedor que trabalha primariamente com a plataforma
Java. Mostraremos como usar os plug-ins C/C++ mais recentes do Eclipse 3.6 e do
NetBeans 6.9.1, e discutiremos a integração entre Java e C/C++ através de JNI e
JNA.
Instalação básica para C/C++
Há diversos compiladores para C/C++, alguns portáveis,
outros específicos para determinadas plataformas. Além do compilador você
precisará de um conjunto mais amplo de ferramentas para depuração, construção,
linking etc. – o chamado toolchain. A
opção mais “democrática” possível é, sem dúvida, o toolchain GNU, encabeçado
pelos compiladores GCC (GNU Compiler
Collection). Este toolchain é livre e gratuito, e suporta praticamente
qualquer plataforma imaginável.
O leitor que usa Linux poderá instalar o GCC e outras facilmente
pelo seu gerenciador de pacotes. Quem usa o Windows pode baixar o Cygwin, em cygwin.com. Independente da necessidade
de C/C++, costumo ter o Cygwin sempre instalado em qualquer máquina Windows,
pois este inclui muitas ferramentas de linha de comando extremamente úteis.
Observe que a instalação default do Cygwin não inclui todo o
toolchain necessário para programar C/C++. Você terá que selecionar manualmente,
na categoria Devel, pelo menos os
seguintes itens: cmake, gcc, gcc-core,
gcc-g++, gdb, make. Ao terminar a
instalação, valide-a executando gcc --version
na linha de comando (note que são dois '-'), o que deve exibir uma mensagem
como:
gcc-4 (GCC) 4.3.4 20090804 (release) 1
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Se você fez esse teste com o Cygwin (a partir da shell CMD.EXE do Windows) e obteve uma mensagem
de acesso negado, tente gcc-4, ou
entre na shell bash antes de chamar o
gcc. Para o leitor que quer ter
várias versões do GCC instaladas, seja no Cygwin ou outro sistema operacional,
recomendo configurar o GCC 4.x como default, ou configurar o IDE de forma a
usar o GCC 4.
Para o usuário do Windows: Ainda não há a opção de utilizar
o toolchain da Microsoft (compiladores e ferramentas do Windows SDK e Visual
C++), pois este não é suportado nem pelo Eclipse CDT, nem pelo NetBeans C/C++.
Há apenas suporte limitado (como execução de Makefiles externos), mas nesse
caso não vejo conveniência em usar o IDE Java. Por outro lado, o GCC do CygWin
não é compatível com a produção de DLLs para uso da JVM para Windows, de forma
que o leitor que usa o Windows até poderá acompanhar as seções de JNI e JNA com
o CDT ou NetBeans C/C++, mas terá que fazer a compilação final da DLL com algum
compilador “nativo” do Windows (o Visual C++ Express é gratuito).
Começando com o NetBeans C/C++
Esta seção é dirigida ao leitor que prefere o NetNeans.
Quem trabalha somente com o Eclipse pode pular esta seção.
Para instalar o suporte do NetBeans para C/C++, você pode
usar um dos pacotes de instalação que incluem este plugin; para seguir este artigo
recomendo baixar o pacote All, pois
vamos precisar tanto de C/C++ quanto do suporte a Java. Quem já tinha o
NetBeans instalado, pode pegar qualquer um dos dois pacotes que incluem C/C++ e
instalar apenas este módulo de forma incremental.
Configuração
Uma vez instalado, o NetBeans C/C++ detectará seu toolchain
GNU automaticamente. Para conferir, entre em Ferramentas>Opções. Todos os itens preenchidos na Figura 1 são exigidos; os que faltam
(compilador Fortran e QMake) são opcionais. Se estiver faltando algum pacote, instale-o
e depois comande Restaurar padrões
para que o NetBeans detecte os programas que faltavam.
As outras abas da tela de C/C++ permitem configurar diversas
outras opções como diretórios de include
e detalhes de destaque sintático. Veja também a aba Editor para as opções de formatação, auto-completamento e
templates, que ganham suporte específico para as linguagens C e C++.
Alô, Mundo
Vamos criar o clássico (ou segundo as más línguas, batido)
“Alô Mundo”. Execute Novo Projeto>C/C++>Aplicativo
de C/C++. Em Nome e local do projeto,
defina o nome do projeto e escolha C
como opção de linguagem para o arquivo principal main.
Edite o arquivo main.c
gerado, acrescentando algumas linha para ficar como a Listagem 1.
Listagem 1. Alô
Mundo em C.
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char** argv) {
if (argc != 2)
return EXIT_FAILURE;
printf("Alo, %s!\n", argv[1]);
return EXIT_SUCCESS;
}
Figura 1.
Configurando o toolchain GCC para o NetBeans.
Execute o projeto. Como este
ainda não havia sido compilado, isso será feito automaticamente, gerando um log
como o da Listagem 2; finalmente,
veremos a mensagem gerada pelo programa.
Listagem 2.
Log de build do programa C (com o NetBeans e Cygwin).
Oferta válida para todos os planos durante o mês de dezembro
+3 MESES
Grátis
Veja os resultado dos nossos alunos
Conquistas reais de quem está aplicando o método
<Perguntas frequentes>
Carreira
Por onde devo iniciar os estudos?
Recomendamos começar pelo Plano de Estudo Carreira Programador Front-End. Essa área da programação é mais visual e intuitiva, tornando-a ideal para iniciantes. No Front-End, você aprenderá a criar a parte visual dos sites, como layout, cores e interatividade. Depois de dominar o Front-End, você pode avançar para Programador Back-End, onde aprenderá a lidar com a lógica e o funcionamento interno dos sites, e, finalmente, para Programador Mobile, focando no desenvolvimento de aplicativos para smartphones. Nossa metodologia é estruturada de forma progressiva para garantir que você desenvolva confiança e experiência ao criar projetos reais, como sites estáticos e dinâmicos.
Em quanto tempo vou me tornar um programador?
O tempo necessário para se tornar um programador varia de acordo com a dedicação de cada estudante. Com nossa metodologia, que inclui um Plano de Estudo detalhado e suporte contínuo, você pode se tornar um programador de 6 meses a um ano, dependendo do seu ritmo e esforço. Nossa abordagem prática e orientada a projetos ajudará a acelerar seu aprendizado.
Eu preciso de um diploma de faculdade para começar a atuar como programador?
Não. Ser programador é uma excelente oportunidade para quem não possui diploma de faculdade. Muitas empresas contratam baseadas nas habilidades técnicas e experiência prática, não necessariamente em diplomas. Após conquistar uma vaga, você pode optar por complementar sua formação com um diploma.
Por que a programação se tornou a profissão mais promissora da atualidade?
A necessidade de programadores cresceu exponencialmente, especialmente após a pandemia de Covid-19, que forçou muitas empresas a se adaptarem ao digital. Com o crescimento das empresas de tecnologia, a demanda por programadores aumentou. Atualmente, há mais de 200 mil vagas abertas no Brasil devido à falta de profissionais qualificados.
Metodologia
Quais são os principais diferenciais da DevMedia?
Didática e Metodologia
Com mais de 20 anos de experiência, nossa metodologia foca em menos aulas e mais prática. Desenvolvemos dezenas de projetos e exercícios para ajudar você a se tornar um programador completo. Nossos projetos são desafiadores e autênticos, não apenas exercícios repetitivos.
Projetos reais e exercícios
Você desenvolverá diversos projetos práticos em cada carreira (Front-End, Back-End e Mobile), recebendo mentoria e suporte contínuo. A prática é essencial, e oferecemos milhares de exercícios para ajudar você a fixar o conteúdo e melhorar sua posição no ranking.
Suporte ao aluno
Nossa plataforma oferece suporte dedicado com professores experientes, respondendo suas dúvidas em menos de uma hora. Isso garante que você receba a ajuda necessária durante toda a sua jornada de aprendizado.
Gamificação
A DevMedia utiliza gamificação para tornar o aprendizado mais envolvente e motivador. Você acumula pontos e moedas por acertos, que podem ser trocados por produtos e customizações no seu card pessoal. Além disso, o sistema de ranking mensal incentiva a competição amigável e a melhoria contínua.
O que eu irei aprender estudando pela DevMedia?
Ao estudar conosco, você se tornará um programador Full Stack, dominando Front-End, Back-End e Mobile. Utilizamos a linguagem JavaScript, a mais utilizada no mercado, preparando você para criar sistemas webs e aplicativos celulares. Nossa abordagem prática inclui exercícios para fixar o conhecimento e desenvolvimento de projetos reais que te preparam, para o mercado de trabalho.
Quais as vantagens de aprender programação através da linguagem JavaScript?
Ela é Multiplataforma, ela vai te permitir programar para web e para celulares utilizando praticamente a mesma sintaxe.
Elá é Full Stack. Ela te permite criar aplicações Front-end, Back-end e Mobile. Isso acelera muito sua carreira e aumenta suas possibilidades de pegar trabalhos autônomos e conquistar uma vaga no mercado.
Ela é fácil de aprender. Como ela não exige conhecimento inicial em “Orientação a Objetos” ela se torna mais simples com uma curva de aprendizado suave e vai te permitir começar a programar mais rápido do que outras linguagens
A plataforma oferece certificados?
Sim, oferecemos dois tipos de certificados: o certificado de conclusão, que você adquire ao consumir o conteúdo, e o certificado de autoridade, que você obtém ao acertar exercícios. Ambos possuem carga horária, que pode ser utilizada para fins acadêmicos, como atividades complementares na faculdade, e também para comprovações em processos seletivos ou no seu currículo.
A plataforma tem suporte ao aluno, como funciona?
Sim, temos uma equipe de programadores pronta para ajudar com todas as suas dúvidas! Durante o horário comercial, o tempo médio de resposta é de até 10 minutos. E não se preocupe, também oferecemos suporte à noite e nos finais de semana, com um prazo de resposta um pouco maior.
A DevMedia me forma como programador Full Stack?
Sim! Oferecemos uma formação completa, do zero até Full Stack. Nosso foco é na prática, então você vai encontrar muitos exercícios e projetos reais ao longo do curso. Garantimos que você sairá com a autonomia necessária para desenvolver seus próprios projetos com confiança!
Tem horário para as aulas?
Não, não temos horários fixos para as aulas. Todo o nosso conteúdo está disponível para você acessar a qualquer momento, permitindo que você estude conforme sua própria disponibilidade e ritmo. Dessa forma, você pode integrar o aprendizado à sua rotina de maneira mais flexível e eficaz.
Por que a DevMedia não usa videoaulas em sua didática?
Nosso foco principal é formar programadores de verdade. Sabemos que o dia a dia de um programador envolve muita leitura, interpretação e escrita de código. Por isso, nosso conteúdo é desenvolvido para ambientar você nesse processo desde o início, proporcionando mais autonomia e acelerando seu aprendizado.
Na vídeo-aula é o professor que está lendo, interpretando e escrevndo o código para você, isso limita o seu progresso. Ao ler e interagir diretamente com o conteúdo, você exercita sua capacidade de leitura e concentração, além de poder avançar no seu próprio ritmo. Dessa forma, você se torna um programador mais independente e preparado para os desafios reais do mercado.
Preciso de um computador específico para estudar na DevMedia?
Não é necessário nada específico. Qualquer computador com processador atual e memória de 8 GB é suficiente.
Eu consigo estudar pelo celular?
Sim, a DevMedia possui um aplicativo que te permite seguir com seus estudos de qualquer lugar.
A DevMedia tem aplicativo?
Sim, nosso aplicativo está disponível na Play Store e na Apple Store, permitindo que você estude de forma prática e conveniente em qualquer lugar.
Preciso estar na faculdade para acompanhar os estudos na DevMedia?
Não, a faculdade não é necessária. Você não precisa de nenhum conhecimento prévio para iniciar os estudos na nossa plataforma.
Assinatura e Pagamentos
Quais são os planos de assinatura disponíveis?
Oferecemos o plano anual, o valor total é lançado no cartão de crédito, parcelado em 12 vezes, e você precisa dispor do valor total no limite do seu cartão. Você também pode optar por pagar no PIX
Adquirindo o plano, terei acesso a todo o conteúdo?
Sim, ao assinar nossa plataforma, você desbloqueia acesso total a todo o nosso conteúdo, sem precisar comprar nada separadamente.
A plataforma tem planos vitalícios?
Não, nossos planos são anuais, garantindo que você tenha acesso contínuo às atualizações mais recentes e aos novos conteúdos. A tecnologia evolui rapidamente, e um plano vitalício oferece um conteúdo estático que se tornará ultrapassado em pouco tempo. Com nossos planos anuais, você está sempre à frente, aprendendo as novidades e tendências mais atuais no mundo da programação.
A DevMedia tem fidelidade?
Sim, nosso plano tem uma fidelidade de 12 meses, o que garante o tempo ideal para você explorar nosso conteúdo e desenvolver a autonomia necessária para trabalhar com programação.
Como funciona o cancelamento?
Nós garantimos seu direito de cancelamento com reembolso total dentro dos primeiros 7 dias.
Para que você aproveite ao máximo seu investimento, oferecemos suporte personalizado para orientá-lo na utilização da plataforma. Também temos a opção de transferência de titularidade do plano, permitindo que outra pessoa aproveite o restante do seu período de assinatura.
Cadastro
Como excluir meus dados da plataforma?
Para excluir seus dados da plataforma, acesse o link : https://www.devmedia.com.br/fale-conosco/ e abra um protocolo de 'Exclusão de dados'. Nossa equipe processará a solicitação e removerá todas as informações do seu cadastro.
Compartilhe esse conteúdo com um amigo!
Faça login para ganhar recompensas.
Ou
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.