JavaRush /Blogue Java /Random-PT /Um guia para o futuro desenvolvedor Java. Empresa - parte...
Diana
Nível 41

Um guia para o futuro desenvolvedor Java. Empresa - parte 1

Publicado no grupo Random-PT
“Não fique muito orgulhoso dessas conquistas tecnológicas que você construiu. A capacidade de destruir um planeta não é nada comparada ao poder da Força." - Darth Vader na Estrela da Morte. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 1

Introdução

Provavelmente, as próximas duas partes da série de artigos são as mais esperadas por muitos, e por boas razões. O que há além do horizonte, além do Java puro? O que os desenvolvedores Java respiram em cada projeto? Considere este um guia de autoaprendizagem real e completo para qualquer engenheiro de back-end médio cuja linguagem de programação principal seja Java. Pretendo cobrir o máximo possível a média hospitalar e descrever não só os frameworks mais populares, mas também as soluções que são consideradas relevantes no momento. Naturalmente, existem muitas ferramentas, e compreender quais são as mais importantes e as melhores é um caminho para lugar nenhum. Cada um de vocês olhou a seção “Empregos” no DOU e encontrou uma pilha de tecnologias que se repetem constantemente de vaga em vaga. Entendo que é impossível descrever tudo, mas chegar a uma estrutura geral é bom, então vamos tentar seguir essa direção. De alguma forma, no passado, em um dos projetos, ocorreu um constrangimento bastante interessante, que, creio, foi e se repete constantemente de tempos em tempos para muitos em uma área ou outra. A tarefa foi definida para anexar uma renderização de uma página HTML à funcionalidade finalizada simplesmente para mostrar o status de entidades individuais. Como resultado, meu colega decidiu anexar o spring thymeleaf, que retirou parte das dependências principais do próprio Spring, quando ninguém usava o Spring. E isso tudo em uma página normal, que simplesmente mostra o status de 2 a 3 entidades. "Nunca vi muito sentido em usar dois sabres de luz... é um show na minha opinião" - Obi-Wan Kenobi. Por um lado, o desenvolvedor resolveu o problema o mais rápido possível, instalou um framework com o qual tinha experiência e integrou-o ao projeto em questão de horas. Mas, por outro lado, o nosso programa cresceu em tamanho, então a questão simples é: ele fez a coisa certa? Para essas tarefas atômicas, quando você tem certeza de que este Thymeleaf/Spring MVC, etc. Não será usado em lugar nenhum, é melhor não usar de jeito nenhum. Sempre me surpreendo com frases como “Ah! Sim, usamos o Hibernate aqui! Olha, está tudo bem, ORM!”, e quando questionados sobre se era possível sobreviver com o JDBC normal aqui, eles encolheram os ombros. Existe a arquitetura comum, que deveria ser simples, que deveria ser tratada com receio, não entulhada de molduras fashion e supermodernas. Como disse Obi-Wan acima, isso nada mais é do que se exibir, embora seja necessário saber utilizá-los. O jovem Javaísta, na minha opinião, é o mais azarado de todos - tantas especificações, tantas bibliotecas que precisam ser estudadas. Só o Java EE tem documentação incrível. Surge a pergunta: o que um iniciante deve fazer, o que deve aprender a seguir, o que deve fazer depois de Horstmann? Resposta simples: infelizmente, conheço muita gente. E começaremos não com estruturas de negócios, mas com coisas mais mundanas e necessárias.

Sistemas operacionais

Linux

Além do Windows e/ou do aconchegante Yosemite, você precisa estender as mãos para o Linux com um sorriso. Para alguns projetos basta ser usuário e saber usar a linha de comando, para outros - muito mais. Qual método é melhor? Existem simplesmente toneladas de livros/tutoriais na Internet. Comece instalando o Ubuntu ou qualquer outra distribuição de sua preferência e tente usá-lo como seu sistema operacional principal pelos próximos dois meses. Será muito melhor se você começar a aprender Java dentro do Linux compilando e manipulando arquivos usando o terminal. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 2A linha de comando do Linux por William Shotts . Leia este livro não como um romance “50 Tons de Cinza”, mas como um curso interativo completo - abra um terminal e repita após o autor. Você quer o básico e como o Linux funciona? Não vamos fazer o curso de Ciência da Computação e sistemas operacionais - isso fica na próxima parte. Acesse edx.org e experimente o curso fácil de Introdução ao Linux . Há também um livro da série mencionada acima, How Linux Works: What Every Superuser Should Know, de Brian Ward . Uma publicação bastante ilustrada que presta atenção a redes, dispositivos e gerenciamento de recursos. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 3Vá em frente? Tem um livro excelente, que, aliás, tenho em algum lugar aqui... é (sacuda poeira)... aqui está! Unix e Linux: Guia do Administrador do Sistema. Evi Nemeth. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 4Um manual bastante extenso e bem traduzido. Para ser sincero, eu pessoalmente não dominei, mas gostei muito do básico de administração (a primeira parte). Naturalmente, você não pode ignorar os scripts Shell. É melhor tentar tudo isso na prática, mas nos livros você pode ler Aprendendo o bash Shell: programação Unix Shell, de Cameron Newham. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 5Uma quantidade tão grande de literatura sobre Linux/Unix não pode ser abordada por completo, especialmente neste artigo, onde o Linux está em segundo plano. Meu colega de trabalho, que comeu o cachorro nesse assunto, aconselhou uma coisa bastante prática: baixe o ArchLinux e tente colocá-lo em funcionamento. No processo você aprenderá mais que eu não quero!

janelas

Nos currículos dos programadores há uma coluna: “Experiência com Windows há mais de 10 anos”. Claro, parabenizo você por jogar contra-ataque desde os 10 anos no Windows, mas peço que não cave um buraco com antecedência na entrevista, porque em um projeto onde você está trabalhando em estreita colaboração com IIS, batch/powershell, Deus me livre, o registro, a entrevista não será muito difícil, e além do sorriso na frente da pessoa sentada. Lida você também receberá uma dose de humilhação. Você precisa disso? A resposta surge por si mesma. Deixe de lado o Windows pirata do torrent e tente instalá-lo em algum tipo de máquina virtual do Windows Server. Estude-o não apenas do lado do usuário e da instalação do JAVA_HOME. Nesse sentido, existe um guia quase completo na forma do livro Mastering Windows Server 2012 R2 de Mark Minasi . Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 6Por exemplo, se você usa o PowerShell, confira o excelente livro Windows PowerShell in Action de Manning, de Bruce Payette . Entendo que é impossível percorrer 1000 páginas, mas pelo menos você pode mantê-lo como referência. Nada mais é necessário, eu acho. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 7Por isso, preste atenção nas lacunas em seu conhecimento no uso do Windows e procure as informações de seu interesse na Internet.

Ferramentas de construção

Maven

Qual é a coisa mais importante para entender no Maven? Aqui estão os primeiros passos e tarefas:
  1. Aprenda o que o Maven faz em cada fase, você pode até memorizá-lo. Isso representa quase 80% de sucesso e lhe dará uma imagem clara.
  2. Crie seus próprios projetos sandbox localmente com um sistema multimódulo, com gerenciamento explícito de dependências. Tente anexar bibliotecas de terceiros, tente criar algo usando-as.
  3. Brinque com o perfil
  4. Entenda o gerenciamento de plugins e estude a lista dos plugins mais populares no site oficial.
  5. Explore como você pode usar melhor o maven em seu projeto. Por exemplo, compilações paralelas podem reduzir significativamente o tempo de compilação.
Para um mergulho rápido, acesse a versão russa do site Apache Maven e pesquise alguns tutoriais no Google. Mesmo assim, a terceira edição de um dos principais livros sobre Maven não será lançada. Até agora, esta é a segunda edição do Maven: The Definitive Guide da Sonatype . Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 8Para o nível avançado, criar seu próprio plugin é adequado. Não se preocupe com que tipo de plugin você precisa criar, pois muitos já existem! Tente criar algum tipo de análogo, estude as fases como dois e dois.

FORMIGA

Esta ferramenta parece muito mais fácil, então não há muito o que aprender aqui. Ainda existem projetos onde o ANT é a única ferramenta de construção. Isso é absolutamente normal: o ANT provou ser uma ferramenta de construção simples e direta no contexto do gerenciamento de pequenas tarefas atômicas (tarefas formigas). Claro, existem muitos plugins aqui, assim como o Maven. Para começar com o ANT, faça o seguinte:
  • Tente manipular arquivos e pastas
  • Implemente diferentes ordens para execução de tarefas. Com base nisso, aprenda as dependências e prioridades das tarefas no ANT.
  • Descompacte e/ou arquivo zip. Nas tarefas, tente brincar com o conteúdo do arquivo e assim por diante.
Não há necessidade de oferecer muitos recursos para aprender TAR. Para um mergulho mais ou menos profundo, basta a página oficial do Apache Ant. ( ant.apache.org ) e os livros Ant in Action de Steve Loughran . Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 9

Gradle

Para mim, Gradle está mais próximo do ANT do que do Maven, mas pode ser chamado de meio-irmão desses dois caras. Possui um ciclo de vida semelhante ao Maven, e a flexibilidade das mesmas tarefas que o ANT possui. Bom, o mais importante é que o Gradle não usa XML e, além disso, você pode fazer o que quiser com ele se estiver mais ou menos familiarizado com o Groovy. Em geral, uma coisa bem saborosa. Não tenha medo de usar Ant/Maven/Gradle no contexto do seu IDE. Essas ferramentas estão totalmente integradas ao Eclipse/IDEA e usá-las no contexto do IDE é bastante confortável.

Integração contínua

Teoria

Estes são programas angelicais que protegem você de ser demitido. Resumindo, este é um software que monitora alterações no código, constrói e executa testes escritos para você. Se tudo estiver bem após cada commit/mesclagem, então a compilação brilhará com uma agradável luz verde/azul. Assim que você quebrar algo, o sistema CI irá reportá-lo imediatamente. Porém, um pouco de teoria – isso é clássico! Integração Contínua: Melhorando a Qualidade do Software e Reduzindo Riscos por Paul Duvall . (também conhecido como “Integração Contínua” em russo) Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 10Este livro ainda discute a criação de seu próprio sistema de CI. Vejamos as duas soluções mais populares nesta área.

Jenkins

Jenkins, também conhecido como Hudson. Aplicativo aberto, amigável e fácil de usar. Para se familiarizar mais com Jenkins, tente o seguinte:
  1. Baixe-o para o seu computador. Instale e configure JDK, Maven, ANT e tudo que você precisa para o projeto.
  2. Crie o primeiro Job e especifique a localização do seu projeto, por exemplo, o pom.xml principal. Execute-o, certifique-se de ter algum tipo de teste para que fique claramente visível.
  3. Aprenda a executar seu projeto com diferentes configurações e opções.
  4. Anexe diferentes plugins e veja como eles funcionam em conjunto com o seu projeto.
  5. Construa gatilhos para diferentes trabalhos. Crie um pequeno pipeline.
  6. Explore o DSL e tente integrá-lo ao Jenkins.
  7. Configure um escravo de outro computador e/ou torne-o uma máquina normal para executar compilações.
  8. Crie compilações noturnas.
Nos livros, basta ler Jenkins: The Definite Guide, de John Ferguson Smart . Um guia claro com muitas capturas de tela. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 11

EquipeCidade

Sim, o TeamCity não é gratuito, mas veja como ele está bem integrado ao ecossistema de produtos JetBrains. Intellij Idea e TeamCity são uma grande união. Em geral, se você já conhece o Jenkins, o TeamCity não será uma floresta escura para você e vice-versa. Em vez de agentes escravos, os mesmos gatilhos e assim por diante. Mas, ao contrário do Jenkins, o TeamCity possui recursos incríveis como, por exemplo, execução remota, também conhecida como commit pré-testado, muito mais estatísticas visuais e muito mais. Gosto muito do guia do usuário no YouTube, que a própria JetBrains fez ( Guia do usuário TeamCity (Parte 1 de 9) - Introdução ). Acho o TeamCity intuitivo e a documentação de alto padrão. Mas se você acha que existe algum livro que vale a pena conferir, deixe nos comentários. É claro que listei apenas uma pequena parte desses sistemas de IC, mas temos tudo limitado em escopo. Provavelmente o melhor guia para aprender é a prática. Instalei no meu computador, iniciei, travei/restaurei as compilações e fui para a cama. E então você pode me trazer com segurança o livro de registros (se quiser :).

Sistema de controle de versão

Não adianta falar muito sobre VCS. É apenas algo que deveria ser, e sem o qual o gerenciamento de projetos seria como na era Mesozóica. Semelhante aos sistemas de CI, vejamos duas das soluções mais populares: Git e SVN.

Git

Nosso Git provou ser um sistema de controle de versão distribuído estável. Comece a aprender aqui e percorra todos os capítulos com o Git já configurado. Depois, há uma série maravilhosa de tutoriais interativos da Code School. Há também um pequeno guia chamado Try Git: Code School . Dos livros, posso recomendar Version Control with Git de Jon Loeliger. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 12 Se você está tão acostumado com a tartaruga (TortoiseSVN, nota do autor) e tem medo do console, você pode, é claro, baixar seu analógico TortoiseGit, mas, na minha opinião, muito mais agradável e esteticamente agradável A solução é um produto da Atlassian - SourceTreeApp. Você pode praticar com repositórios remotos, já que existem serviços de host suficientes na Internet. Se quiser, treine localmente. Não? Em seguida, crie uma conta no GitHub e trabalhe em modo completo: faça alguns commits, bifurque algum projeto de código aberto, faça algumas mesclagens entre ramificações e assim por diante.

SVN

Outro VCS igualmente popular é o SVN. Este sistema não pode se orgulhar de distribuição. Cada um deles tem suas próprias abordagens, seus prós e contras. Não deixe de ler a conversa interessante entre um novato e um usuário SVN . Há um livro gratuito em read-bean.com com tradução para o russo. Um minicurso do TutorialsPoint também será extremamente útil . Não perca o site oficial do Apache subversion.apache.org . O cliente mais interessante para mim é o já citado TortoiseSVN. Dentre os livros, pode-se destacar: Controle de Versão com Subversion de Michael Pilato . Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 13Gostei porque dá atenção à administração do próprio servidor SVN. Espero não ter perdido os pontos principais.

Ferramentas de teste

Seria uma boa ideia entender em seus pequenos projetos sandbox o que são testes unitários, testes de integração e testes de regressão. JUnit A teoria dos testes unitários está bem descrita nos livros do artigo anterior. Em particular, o Clean Code até descreve o junit como uma das bibliotecas populares nesta área. Mas quando se trata especificamente de JUnit, há um ótimo livro chamado Practical Unit Testing with JUnit and Mockito, de Tomek Kaszanowski Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 14 . É claro que há mais do que apenas JUnit e Mockito. Aqui o autor apresenta Matchers, oferece exemplos de testes parametrizados e percorre brevemente o TDD. Há também um livro que foi lançado recentemente. Este é o Pragmatic Unit Testing em Java 8, de Jeff Langr. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 15 O autor apresenta o Hamcrest, descreve as melhores práticas e, é claro, o Java 8. Você pode ler com segurança o livro de Tomek. A propósito, em relação ao TDD. Não quero levantar dúvidas sobre se vale a pena usá-los, se é bom ou ruim, se os clientes precisam deles. Basta lembrar: trabalhar em TDD não é novidade, e muitos projetos utilizam essa metodologia, e para muitas pessoas é a única e indiscutível regra. Em teoria, você pode ler os clássicos. Kent Beck - Desenvolvimento orientado a testes: por exemplo . O que mais gostei foi da parte sobre padrões TDD. Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 16Surpreendentemente, existe um bom curso em primeira pessoa - Let's Play TDD (200 vídeos!) no Youtube. Não menos interessante é a discussão do próprio Fowler sobre se vale ou não a pena usar TDD, se isso prejudica o design e coisas do gênero. Apenas lembre-se disso de uma vez por todas: TDD não cria um design ruim, você o cria. Se você usa mais o BDD (um não interfere no outro) e, por exemplo, usa Cucumber em um projeto, então este é um plano um pouco diferente. Um bom livro sobre isso é Manning BDD in Action: Behavior-driven development for whole software lifecycle, de John Ferguson Smart . Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 17A propósito, John Ferguson Smart está promovendo ativamente este tópico para as massas. Se você é um Scrum Master ou PM que finalmente não machuca os olhos, mas gosta de ver os testes quando e se então, siga John no Twitter . Em relação ao Cucumber, veja a implementação Java no site oficial e leia o livro The Cucumber Book: Behavior-Driven Development de Matt Wayne . Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 18

Bibliotecas de terceiros

É importante poder usar bibliotecas populares quando necessário - elas simplificam a vida diária de todo desenvolvedor Java. As soluções populares incluem o seguinte: Joda Time. Oferece a substituição completa da data e hora nativas inconvenientes pelo JodaTime mais conveniente. Aqui está uma boa referência . Observe que se você já estiver usando Java 8, o JodaTime não será de muita ajuda. O fato é que a nova API DateTime substituiu completamente essa biblioteca e, em alguns lugares, até copiou e colou de maneira inteligente. De acordo com o artigo do próprio autor , cada classe Joda pode ser convenientemente substituída por uma análoga de java.time. Google Goiaba. De muitas maneiras, o Java 8 até substitui o Guava. Os mesmos objetos, Stream API, Java Predicate e muitas outras coisas sugerem substituí-lo e não usá-lo. Repito, se você não tem Java 8, nada melhor do que este guia e suas mãos diretas.

Apache Commons

Não é tão fácil se livrar desse monstro: cerca de 40 bibliotecas para todas as ocasiões, do conhecido commons.lang à validação xml, do DBUtils ao commons.io . Naturalmente, você não precisa se familiarizar com tudo, mas será útil ter livros e tutoriais de receitas com você. Por exemplo, para entender do que se trata o Apache Commons, você pode consultar o Jakarta Commons Cookbook de Timothy O'Brein Um guia para o futuro desenvolvedor Java.  Empresa - parte 1 - 19

Conclusão

A empresa é tão vasta que seria estúpido começar a discutir JavaEE e outros frameworks sem tudo o que cerca esta empresa. Portanto, na segunda parte focaremos em cada camada da arquitetura multicamadas, consideraremos serviços e assim por diante. Muito obrigado pela sua atenção. Fim da primeira parte. Partes anteriores da série:
  1. Um guia para o futuro desenvolvedor Java. Noções básicas de Java
  2. Um guia para o futuro desenvolvedor Java. Código elegante
Original com DOU
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION