Algum tempo atrás, mais uma vez mudei de emprego. O novo empregador foi tão gentil que me permitiu escolher qualquer IDE que eu gostasse e pagar pela licença (mas dentro de limites razoáveis). Além disso (pela primeira vez), eu tinha direitos de administrador em um computador em funcionamento, para poder instalar qualquer coisa e experimentar quantas quisesse. Tentei: Oracle SQL Developer, TOAD, Alt SQL Developer e (SUDDENLY!) IntelliJ IDEA (o desenvolvedor PL / SQL não tentou, mas trabalhou muito antes). Se você escreve regularmente código PL / SQL, ou pelo menos faz solicitações ao Oracle Database de tempos em tempos, acho interessante que você leia as conclusões a que cheguei.
Eu quero avisar você imediatamente. Não posso dizer que estudei cada IDE completamente, e o PL / SQL Developer, entre outras coisas, eu o vi pela última vez há cinco anos. Portanto, sempre é possível dizer que, quando digo "isso não está no IDE", na verdade está lá, simplesmente não o encontrei. E quando falo sobre PL / SQL Developer, quero dizer que a versão parece ser 8 (que escrevi há 5 anos). É possível que muito tenha mudado lá, e não necessariamente para melhor.
Concorrentes
Então o que nós temos? Antes de tudo, é isso que podemos chamar de os três principais do desenvolvimento da Oracle: TOAD, PL / SQL Developer e Oracle SQL Developer. Esses produtos estão no mercado há muito tempo, todos os conhecem, cada produto tem seu próprio exército de fãs. Várias vezes me deparei com a opinião de que o TOAD é mais parecido com DBA e o PL / SQL Developer é mais parecido com desenvolvedores. Sobre o Oracle SQL Developer, eu não ouvi nada parecido com isso, e o exército de seus fãs, aparentemente, consiste principalmente de gerentes, e isso é apenas porque é gratuito.
Além disso, decidi incluir o Alt SQL Developer (um produto, muito tempo e talvez ainda desenvolvido por ONE person) e o IntelliJ IDEA (também conhecido como Puxa, ele é Goga, ele é DataGrip).
Para quem não conhece o design dos produtos JetBrainsO sistema existe algo como isto: existe o IntelliJ IDEA Community Edition - é gratuito para Java. Existem vários produtos pagos similares (cerca de algumas centenas de dólares / euros) - RubyMine para Ruby, DataGrip para bancos de dados e assim por diante. E existe o IntelliJ IDEA Ultimate Edition, que é o mais caro (cerca de 650, ao que parece), mas combina a funcionalidade de todos os produtos JetBrains. Todos esses produtos têm uma interface idêntica e são muito semelhantes, facilitando a troca de um para outro - ainda mais fácil do que de uma versão do Excel para outra.
Portanto, mais tarde no texto, dizemos IDEA - queremos dizer DataGrip, dizemos DataGrip - queremos dizer IDEA.
Desenvolvedor PL / SQL
Comecei a trabalhar com a Oracle em 2011 e esse foi o primeiro IDE que me deparei. Aconteceu que nos próximos três anos, onde quer que eu trabalhasse, foi utilizado o PL / SQL Developer. Estudei muito bem e parecia uma ótima ferramenta. E embora 2014 tenha sido o último ano em que lancei esse IDE, ainda hoje me parece uma boa escolha. O principal ponto negativo é que ele só funciona no Windows.
Desenvolvedor Oracle SQL
IDE grátis lançado pela Oracle. Além do gratuito, há outra vantagem - multiplataforma. Você pode executar no Linux e em papoulas. Mas, talvez, as vantagens terminem aí. Comecei a usá-lo pela primeira vez este ano em 2015. Funciona razoavelmente bem, mas há toneladas de pequenas coisas irritantes. Barato e alegre.
TOAD
Tentei começar a trabalhar com o TOAD várias vezes na minha carreira. Cada vez que eu rodava, e imediatamente eu tinha uma pergunta - e depois? Onde clicar para começar a trabalhar? A última vez foi há algumas semanas atrás, e eu finalmente a dominei! Eu descobri onde está qual botão, onde está qual marcador. Este IDE é bastante poderoso, mas de alguma forma estupidamente organizado, IMHO. Um monte de janelas e favoritos que ficam confusos. E também apenas no Windows.
Alt SQL Developer
O conhecimento desse IDE começou com um tópico no fórum . Um cara entrou no fórum e disse que estava escrevendo seu desenvolvedor de PL / SQL com blackjack e prostitutas. Nunca usei esse IDE seriamente, apenas o instalei e tentei trabalhar um dia, algumas semanas atrás. Parece o PL / SQL Developer, do qual todo o lixo desnecessário foi jogado fora. Infelizmente, apesar dos sete anos de história, ainda está úmido. Não me lembro exatamente do que encontrei lá, mas, infelizmente, para o trabalho no meu projeto atual não é aplicável. E, em geral, o pensamento se arrasta ao afirmar que o autor abandonou o desenvolvimento. Mas é uma pena, para um produto desenvolvido por uma pessoa, este é um resultado muito digno. Respeito, respeito e apoio aos raios! Novamente, apenas o Windows, mas, neste caso, não vamos reclamar.
Intellij IDEA
Na verdade, no começo eu só queria aprender um pouco de Java e escrever neste IDE. E então, para um dos meus projetos de hobby, eu precisava criar um banco de dados PostgreSQL, e o IDEA também fez um ótimo trabalho! No projeto atual, ele começou a trabalhar em estreita colaboração com esse IDE e estava geralmente satisfeito. É verdade que uma mosca na pomada não ficou isenta: deparei-me com um bug que estragava seriamente o sangue (o IDE parou de mostrar objetos de um dos esquemas - com problemas, um dos mais necessários). Escrevi um relatório de bug, a solução foi avisada no fórum JetBrains após alguns dias e antes disso eu sofria.
Sobre o que os desenvolvedores estão falandoEm uma conversa com colegas, mencionei uma vez que, há algum tempo, decidi começar a aprender java - bem, basicamente para mim. Eu comecei com o Eclipse, só porque eu ouvi sobre esse IDE antes. E então, depois de um ano ou dois, um amigo aconselhou a IDEA, eu tentei - e foi amor à primeira vista. Esse IDE parecia me entender e quase ler mentes. Então, um dos colegas perguntou:
"Por que ela te enganou tanto?"
- Bem, mesmo pelo menos puramente esteticamente - há um tema de design escuro, por exemplo.
"Mas o Eclipse também tem um tema sombrio!"
"Não, você não entende." Fiz o download do Idea, instalei e, na primeira vez em que ele foi iniciado, a primeira coisa que mostrou foram duas fotos lado a lado. Tópico escuro ou claro - escolha.
Nesse momento, nosso funcionário front-end levantou o dedo e disse:
- BOOOOOOT! Experiência do usuário!
Preço de emissão
Os preços são retirados de sites oficiais, com base em um desenvolvedor. Como regra, todo mundo tem pacotes para um grande número de desenvolvedores, e ainda é mais barato.
Desenvolvedor PL / SQL: suporte anual de $ 216 + 60.
Oracle SQL Developer: Gratuito.
TOAD: 1054 euros (LOLSTO ??? Talvez eu apenas tenha olhado no lugar errado?)
Alt SQL Developer: $ 99
DataGrip: 199 euros no primeiro ano, 159 segundos e 119 subsequentes.
Desenvolvimento de PL / SQL no IDE
Escrevendo um código
Primeiro de tudo, o processo de desenvolvimento consiste em ler e escrever código. Bem, é claro: destaque de sintaxe, preenchimento automático, navegação, dicas de ferramentas e tudo mais. Como os concorrentes lidam com essa tarefa?
Se considerarmos o lado prático da questão, os carros-chefe seguirão com confiança. O preenchimento automático e a navegação, IMHO, funcionaram melhor no PL / SQL Developer. No TOAD e no IDEA, é um pouco pior, mas não consegui que o Oracle SQL Developer force a conclusão automática da maneira que for mais conveniente para mim (além disso, as configurações nele voam constantemente para mim - por algum motivo, elas não são salvas). Separadamente, quero observar uma nuance menor: se a janela de ofertas para preenchimento automático já estiver fechada por algum motivo, o PL / SQL Developer poderá mostrá-lo novamente com Ctrl + Space. E também dicas de ferramentas com nomes e tipos de argumentos de função. O restante dos IDEs não sabem como, e se sabem, não sei qual chave e como essas opções são chamadas nas configurações, também não sei.
Além disso, o PL / SQL Developer teve alguns truques interessantes necessários especificamente para trabalhar com SQL: gerar uma lista de clique único de todos os campos da tabela, separados por vírgulas, pesquisar por código em ALL_SOURCE, um modo especial para exibir resultados selecionados quando os campos estiverem em colunas e em coluna adjacente uma linha de dados. É MUITO conveniente quando você precisa examinar quais campos e aproximadamente quais dados estão em uma tabela desconhecida. De tudo isso, dos concorrentes, encontrei apenas na pesquisa de código IDEA e na geração de listas de colunas da tabela.
As opções de formatação para SQL e PL / SQL também são compartilhadas por todos, mais ou menos iguais no poder, e também há uma visualização. A menos que no TOAD eles sejam de alguma forma complicados demais para formular.
Mas os carros-chefe lidam com o lado estético da questão de alguma forma não muito. Se o IDEA tiver um tema escuro inteiro, você poderá maximizar o fundo escuro no editor de código. O plano de fundo em outras janelas permanecerá branco (no PL / SQL Developer, lembre-se, isso também é parcialmente personalizável, mas tudo está em lugares diferentes, você pode tilintar de copos, o resto não tem nada a ver). O Oracle SQL Developer é o único que possui vários conjuntos de cores prontos para realçar a sintaxe, incluindo um conjunto com fundo escuro. O restante dos IDEs, por padrão, simplesmente vyrviglaznyh esquemas de cores de alto contraste e a nova fonte Courier - IMHO, a fonte monoespacial mais feia nesta parte do Universo. IDEA usa a fonte Consolas, é de alguma forma mais agradável. O TOAD (eu tenho a versão 11.5) se destacou separadamente: há um erro devido ao qual os caracteres%, &, * e ^ (e os três primeiros são frequentemente usados em PL / SQL) não se enquadram em nenhum conjunto de caracteres nas configurações, o que leva à incapacidade de definir a cor da fonte para eles. Ou seja, eles sempre permanecem negros, e um tema sombrio significa dor e sofrimento. E este é um produto para um pedaço de verdura? É um mano do fiasco.
Consultas, blocos PL / SQL e scripts
Tudo é surpreendentemente suave. O trabalho parece mais ou menos o mesmo para todos, embora não seja possível sem pequenas surpresas. No Oracle SQL Developer, é muito inconveniente incluir saída no console (você precisa de mais de um clique do mouse) e o IDEA exibe registros de data e hora que não estão desabilitados - isso dificulta a depuração de procedimentos que usam SQL dinâmico.
O TOAD e o IDEA também podem exportar dados de uma tabela na forma de expressões INSERT.
O PL / SQL Developer tinha um modo de emulação honesto do SQL * Plus - uma janela separada onde você pode escrever comandos como no próprio SQL * Plus - com a saída ali. O resto pode simplesmente executar estupidamente scripts, e a saída sai para a próxima janela.
Outra coisa que vale a pena mencionar é a capacidade de determinar os limites das consultas SQL. O Oracle SQL Developer, o PL / SQL Developer e o Alt SQL Developer exigem que você separe as consultas com ponto-e-vírgula (e os blocos PL / SQL com uma barra); caso contrário, eles não entenderão onde uma consulta terminou e a outra começou. A IDEA a esse respeito é um pouco mais inteligente (e o TOAD, ao que parece também) - é possível escrever duas consultas válidas sem separá-las uma da outra com um ponto-e-vírgula, colocar o cursor em uma delas e executá-la. Além disso, o IDEA circunda a solicitação reconhecida com uma borda verde antes de iniciá-la, além de garantir que seja executado exatamente o que é necessário.
Outro ponto importante é a depuração passo a passo, mas parece ser o mesmo para todos os IDEs, começando quase com o TurboPascal 7.0. E sim, há apenas uma semana, no fórum JetBrains, eles escreveram que a depuração passo a passo do PL / SQL no IDEA estava pronta. As pessoas já estão testando por completo.
Navegador de Objetos
Os navegadores de objetos mais convenientes são o PL / SQL Developer e o Alt SQL Developer. Eles têm um painel à esquerda com um navegador e, à direita, você pode escrever código, e o PL / SQL Developer, além disso, tinha a capacidade de pesquisar e filtrar objetos no mesmo painel. O Oracle SQL Developer é quase tão bom, mas eu gosto um pouco menos. No TOAD, não gosto do fato de que, se você olhar para o navegador de objetos, no painel esquerdo os próprios objetos são mostrados e, à direita, no restante da tela, suas inúmeras propriedades são exibidas. Mas para fazer objetos à esquerda e o editor de código à direita falhar. Ou seja, o TOAD fornece informações ainda mais, mas a usabilidade não é seu ponto forte. A IDEA possui um navegador de objetos - o ponto mais fraco, com menos três pontos. Por um lado, eles podem ser entendidos, não um único Oracle, ou mesmo apenas um banco de dados relacional, o DataGrip está vivo, mas por outro: é chamado de carga - suba na caixa.
Porém, o IDEA pode desenhar diagramas de ER para tabelas já existentes no banco de dados, e essa função é chamada no navegador de objetos. Para isso, ela é uma gorda mais.
Controle de versão
Com o controle de versão, a situação é difícil. Historicamente, aconteceu (eu não sei, mas é um fato) que as pessoas que trabalham com a Oracle, na maioria das vezes, estão adormecidas em questões de organização de processos de desenvolvimento em uma equipe. Você pode imaginar um desenvolvedor sênior de Java (ou C / C ++ / front-end) que nunca trabalhou com nenhum sistema de controle de versão em sua vida? Mas o desenvolvedor sênior da Oracle pode ser encontrado com muita facilidade - o último deles que vi no ano passado. Não há necessidade de falar sobre testes (no meu trabalho anterior, mostrei ao nosso líder de desenvolvimento APEX um simples teste Java + Selenium e ele me respondeu: "De jeito nenhum! Sem testes! Isso é o dobro do trabalho - e testes e código para suporte! "), mas, para a expressão" Integração Contínua ", ao que parece, eles teriam me matado lá (portanto, não me expressei).
Por esse motivo, não pude realmente testar os recursos de trabalho com os sistemas de controle de versão PL / SQL Developer e Oracle SQL Developer.
Mas um pouco eu tenteiAntes de escrever este artigo, iniciei o Oracle SQL Developer no meu computador doméstico. Liguei-me ao repositório, fiz clone, mudei o arquivo, olhei as alterações na janela de comparação de versões, apertei commit ... recebi a exceção java assinado . Mas eu tenho uma versão antiga, dois ou três anos atrás. Ela está fresca no trabalho, passou neste teste com honra. Haha
Eu trabalhei na IDEA com o git, e a IDEA é perfeita nesse sentido. Meus colegas usam o SourceTree para trabalhar com o git (eu uso os dois), e posso dizer que o IDEA está reproduzindo o SourceTree em seu próprio campo - apesar do SourceTree não poder fazer mais nada.
Para o restante dos IDEs, o item de menu para trabalhar com sistemas de controle de versão está nominalmente presente, mas não sei mais nada.
Conclusões que fiz para mim
Em termos de relação preço / qualidade, o Oracle SQL Developer vence por uma ampla margem: se dividir zero por algum número, seria zero;) E se deixarmos de lado as piadas, a plataforma cruzada e a gratuita são quase suas únicas vantagens. E puramente do ponto de vista ideológico: se você observar as capacidades financeiras dos desenvolvedores dos IDEs listados, a Oracle é a empresa mais rica. No entanto, se considerarmos a funcionalidade e usabilidade reais, o software deles é o mais miserável.
O Alt SQL Developer também é um programa bastante simples e, IMHO, não vale nem os 99 dólares que estão pedindo. Mas o pau-das-árvores: em primeiro lugar, ele cosplay do PL / SQL Developer de maneira bastante qualitativa e, em segundo lugar, foi escrito por uma pessoa em seu tempo livre , e não por uma empresa com um valor de bilhões de dólares. Mencione na mesma linha com os navios-chefe, ela definitivamente merecia.
O TOAD é um software poderoso, mas com uma interface desumanamente inconveniente e custo proibitivo. Não sei como você pode pagar uma quantia em dinheiro por isso (ainda espero ter olhado na direção errada). 200 - eu teria pensado e ainda assim eu não compraria .
Desenvolvedor PL / SQL - era o meu ideal antes do advento do IDEA. Depois de ler este artigo, percebi que o PL / SQL Developer tinha até cinco anos de idade melhor do que a maioria de seus concorrentes agora.
Qual IDE eu escolhi?
Eu escolhi o IntelliJ IDEA no momento e quero tentar explicar o porquê. Parece que ela sabe algumas coisas piores que seus concorrentes (navegador de objetos), mas o resto é mais ou menos o mesmo. Mas, no entanto, o IDEA possui vários recursos incríveis que superam as deficiências. Sobre eles um pouco mais.
Modelo ao vivo. É absolutamente impossível não mencionar um dos principais recursos do IDEA - Live Template. O que é um modelo de código - todo mundo sabe mais ou menos e em todos os IDEs da Oracle. Você escreve uma abreviação condicional e o IDE a substitui por uma longa. Por exemplo, você pode configurar o IDE para substituir "sft" por "select * from". A IDEA foi além, e esse recurso é chamado de Modelo Ativo. Você pode inserir expressões especiais emolduradas pelos sinais "$" dentro do modelo, e a IDEA não apenas substituirá automaticamente, mas pressionando Enter, moverá o cursor para os locais onde essas expressões estavam.
Um pequeno exemplo para quem não trabalhou na IDEASuponha que você tenha uma variável MY_COL
que contém uma coleção. Você precisa escrever o código PL / SQL para lidar com essa coleção. Você pode simplesmente escrever ou criar um modelo! Vá para Configurações, localize o item Modelo ativo, clique no sinal de adição à direita.
Preencha: Abreviação - bem, por exemplo, "fori". Descrição - opcional. Texto do modelo - digite o seguinte:
for i in $collection$.first .. $collection$.last loop $END$ end loop;
Abaixo você ainda precisa selecionar o contexto aplicável. Isso é necessário para que as mesmas abreviações possam ser usadas para diferentes idiomas. Clique em OK Agora no editor: digite fori e pressione TAB. Um modelo de código aparece e um quadro e cursor vermelhos aparecem no lugar de $ collection $. Agora você precisa digitar "my_col" e pressionar Enter. Você deve ser capaz de:
for i in my_col.first .. my_col.last loop end loop;
E preste atenção - o cursor aparecerá no lugar de $ END $, ou seja, não após o seu design, mas em algum lugar interno - você controla esse comportamento!
Isso pode não estar muito claro na descrição, por isso é melhor colocar um IDE e praticar. Eu garanto que você vai gostar.
Refatoração. Só que todo mundo tem um texto de substituição automática, mesmo em um notebook, provavelmente. Mas o que os Três Grandes não têm é uma substituição automática um pouco mais inteligente. Se você tiver várias funções em um pacote que usem variáveis ou parâmetros com o mesmo nome (e mesmo que essa combinação de caracteres seja usada em outro lugar), o AutoCorreção renomeará todos eles. E se você precisar renomear uma variável em uma das funções, precisará seguir e substituir automaticamente no modo semi-automático. A IDEA resolveu esse problema - com Shift + F6, você pode renomear exatamente o que precisa. E estas são apenas flores, refatorar é uma coisa um pouco mais complicada.
E também ...
Em 2009, Alan Cooper, um renomado especialista em design de interface, lançou a terceira edição de seu livro "On Interface". Lá, em particular, ele chamou a atenção do leitor para um fato tão estranho: qualquer programa aplicativo para processar pelo menos alguns dados do usuário (aqui queremos dizer quaisquer dados reais - bem, lá Word, Excel, bloco de notas, Paint etc.) podem crie um arquivo, dê um nome, escreva dados nele, etc., mas ninguém (!!!!) pode renomear um arquivo já aberto pelo mesmo programa, embora não haja restrições por parte do sistema operacional. Para renomear um arquivo, feche-o, entre em contato com os serviços do sistema operacional e abra-o novamente. Usabilidade, sim.
Era um ditado, um conto de fadas virá. A Taki IDEA dominou esta função !!! Menos de 10 anos, como eles dizem. Renomear arquivos faz parte da funcionalidade de refatoração.
Esperando o resto ...
Inspeção de código Quem quer que leia Habr por um longo tempo, provavelmente viu os artigos que aparecem regularmente de uma empresa desenvolvendo seu produto para análise estática e provavelmente conseguiu penetrar nesse conceito. Como se viu de repente, o IDEA possui um certo conjunto de regras para análise PL / SQL. Lá, é claro, o cenário ainda é ruim, e eu vou apresentar a eles uma Solicitação de Recursos com algumas regras novas, mas mesmo o que existe pode fazer algo de bom. Depois de verificar apenas um pacote aleatoriamente, encontrei uma variável não utilizada e quatro ... uh ... como é em russo? ... instruções inacessíveis. E então, essas declarações inacessíveis foram formadas por acaso quando o texto foi corrigido e, no final, eram os mesmos erros.
Executando scripts. O IDEA pode executar arquivos bat / bash, isso é configurado diretamente no IDE. É extremamente simples: abrimos o arquivo correspondente, a IDEA oferece a instalação de um plug-in para trabalhar com esse tipo de arquivo, concordamos que o plug-in está instalado (em alguns segundos), configuramos o lançamento e continuamos trabalhando. Muito útil se você usar scripts para executar o SQL * Plus. Também usamos testes de unidade para PL / SQL escritos em Ruby e da mesma maneira que são executados no mesmo IDE (mas para Ruby você já precisa instalar o IDEA Ultimate Edition, o DataGtip não funcionará).
Usabilidade. No final, o IDEA é simplesmente conveniente. A IDEA possui vários plugins. Você simplesmente não surpreenderá ninguém com plug-ins, eles estão por toda parte. Mas a IDEA pode, por exemplo, determinar por si mesma que possui um plug-in que pode ajudá-lo. Um caso típico - você abre um arquivo, o IDEA exibe a mensagem "existe um plug-in para trabalhar com esse tipo de arquivo" e oferece o download e a configuração. Em geral, geralmente, quando algum lixo estranho acontece, o IDEA mostra um menu pop-up com uma lista de ações possíveis para corrigir esse lixo. Muito bom atendimento ao usuário.
A IDEA tem uma pesquisa de ajuda. Se você souber o nome de algum recurso do IDE, basta ir à ajuda e digitar esse nome na barra de pesquisa; o IDE mostrará onde esta função está com a seta.
TL; DR IDEA é um iPhone do desenvolvimento PL / SQL. Só posso desejar aos desenvolvedores da IDEA mais sucesso e quero lembrar aos desenvolvedores dos IDEs restantes que os dinossauros que não puderam evoluir se extinguiram.
PS: Não consegui terminar o artigo por muito tempo. Parece que existem tantas funções em qualquer IDE moderno que você pode estudar e escrever sobre elas sem parar, e estudar 5 IDEs diferentes e descrever a diferença entre elas é ainda mais infinita. Aqui, eu expus as coisas mais importantes para mim pessoalmente, e geralmente descrevi muitas coisas pessoais em termos de “gostar - não gostar”, “conveniente - desconfortável”, “bonito - feio”. No entanto, espero que os leitores tenham uma idéia geral e possam experimentar o que é descrito por si mesmos.
PPS JetBrains, você tem uma cerveja;)