- Acesso nativo a bancos de dados ou por ODBC;
- Acesso nativo às variáveis GET e POST do protocolo HTTP;
- Conexões e queries a bancos de dados através de instruções bem simples;
- Criação simplificada de classes;
- Disponibilidade de literatura na Web;
- Eventos centrados nas tags;
- Facilidade para desenvolvimento de plugins;
- Funções sem excessiva tipagem;
- Funções nativas para leitura de arquivos no servidor (texto);
- Funções nativas para manipulação de arquivos comprimidos (ZIP);
- Funções nativas para manipulação de arquivos PDF;
- Manipulação simplificada de arrays;
- Manipulação simplificada de datas;
- Manipulação nativa de expressões relacionais (para check e parsing);
- Query Return by array;
- Tratamento nativo do protocolo de e-mail;
- Tratamento nativo do protocolo de transferência de arquivos (FTP);
- Treinamento rápido;
Acesso nativo a bancos de dados ou por ODBC
As aplicações Web, geralmente, envolvem a leitura de bancos de dados. Isto ocorre pelo fato de que nos últimos anos a Internet vem sendo usada para finalidades comerciais e empresariais bem exigentes. Até a alguns anos atrás, era preciso instalar módulos complementares com conectores e objetos de acesso a dados, e algumas linguagens conservam estes resquícios, como o ASP e o Java.
A linguagem ASP, alias VBScript com objetos complementares, precisa do suporte dos módulos OLEDB, ADODB e MSDTC instalados no servidor IIS. O IIS não possui versões para todos os sistemas operacionais, mas tão somente para o Windows. Os módulos de apoio residem em DLLs cujos ponteiros ficam constantemente na memória. A interferência de novos objetos ou de DLLs criadas (pois isto é estimulado pelas suites RAD do mercado) pelos desenvolvedores podem simplesmente embaralhar o espaço de memória destas DLLs, levando o servidor ao travamento.
Existem vários produtos necessários para o IIS, como o ASPemail, códigos de barras e gráficos, que precisam ser instalados. Este pacotes possuem várias DLLs que precisam ser registradas no IIS, para executarem como serviços, bem como serem configuradas. A linguagem PHP já possui o suporte nativo para:
- FTP
- Mysql
- ODBC
- Postgres (banco de dados)
- SQLite
Não é preciso fazer a cansativa e onerosa instanciação de objetos específicos, e nem se preocupar se os mesmos vão travar o servidor. Apenas é preciso se certificar de que os serviços correspondentes no servidor alvo estão em execução, é claro.
Acesso nativo às variáveis GET e POST do protocolo HTTP
A linguagem Java possui objetos encapsulados em classes específicas que possibilitam o acesso às variáveis GET e POST das requisições HTTP. Mas isto se dá com o servidor Tomcat executando. Se utilizarmos somente o JDK, testando programas no console, não conseguimos testar as requisições HTTP. O Java, para ambiente Web, precisa de um servidor Tomcat, cuja compreensão não é tão óbvia, ou Websphere, cuja compreensão é ainda mais longínqua, ambos programados seguindo a filosofia de servlets, pois senão as entradas e saídas padrão não são entendidas.
Entende-se disto que o Java tem servidor específico. A correta abordagem seria que ele fosse um módulo do IIS ou Apache, para fins de aplicações Web. Ao invés disto, ele tem que rodar no seu próprio servidor.
O ASP precisa instanciar seus objetos específicos.
No caso do servidor Apache, é possível se implementar o acesso diretamente pelos seus módulos, sem a utilização de linguagens. Mas como isto tem uma vertente muito grande de complexidade, as linguagens que rodam debaixo dele tem esta característica nativa. As linguagens PHP, Perl, Python e outras tem esta funcionalidade implementada na forma de um simples arranjo para cada finalidade:
$_GET – para os parâmetros GET;
$_POST – para os parâmetros POST;
Conexões aos bancos de dados através de instruções simples
O ASP precisa instanciar seus objetos específicos e, pior ainda, um para conexão e outro para os recordsets (datasets):
ADODB.Connection – para as conexões;
ADODB.Recordset – para os recordsets.
Do Java nem se fale. É preciso instanciar a classe de conexão com uma string de acesso difícil de se memorizar, preparar a sentença SQL, e depois executar.
Criação simplificada de classes
No início do verdadeiro “boom” do conceito da programação orientada a objetos, os analistas e programadores achavam que esta seria a solução de todos os programas. Os objetos, excessivamente estruturados, tornavam o programa auto-documentado, pois as instruções revelavam claramente suas intenções.
A evolução dos objetos, no entanto, transformou-se numa busca obsessiva do minimalismo. Método para “extração de vírgula”, método para “enxugar gelo”, a ponto de se precisar de especialista para cada classe. Hoje, as linguagens Web estão evoluindo para produtividade. Faz-se método para o que é realmente necessário. Não se perde mais tempo fazendo todos os métodos possíveis para depois se utilizar apenas 10 % deles (se muito).
No início desta forma de abordagem, está o Java, que possui classes, e dentro delas métodos para tudo. No final, mais prático está o PHP. E como uma aberração está o ASP, onde não se tem métodos para grande parte das características desejáveis. Os arrays em ASP (insumo básico para qualquer linguagem) são os mais fracos de qualquer linguagem Web disponível. É preferível se ter uma linha de valores separados por vírgulas do que um arranjo em ASP.
As classes em Java criam um ambiente de excessiva, cansativa e improdutiva tipagem de variáveis. Dificilmente, após alguns meses de criação de uma classe, o programador se lembra de como utilizar os métodos de uma classe que ele fez.
Disponibilidade de literatura na Web
Neste requisito, as linguagens que estão no rol do software livre oferecem uma literatura mais vasta (como o PHP e JAVA). Isto porque a comunidade de desenvolvedores e de usuários se ajuda mutuamente. Existe uma infinidade de fóruns a respeito destas linguagens. Já às proprietárias (como ASP e ASP.NET) não interessa revelar aquilo que se chama “internals”, ou seja, características que são macetes de manipulação de comandos. O interesse dos fornecedores destas últimas é formar especialistas que serão suportes PAGOS, e que vão zelar pela permanência dos softwares nas empresas. Nisto vemos mais uma relação de interesse do fornecedor do que do cliente.
Qualquer dúvida a respeito do software livre é resolvida em pouco tempo pela numerosa comunidade de usuários de uma linguagem na Internet, atuando como uma grande rede neural de pessoas, ou um CÉREBRO COLETIVO.
Eventos centrados em tags
As aplicações e sistemas para Web se baseiam em “design dirigido para execução”. Por isso o design é tão importante neste universo. O analista do negócio orienta o programador quanto às regras do negócio, e o designer quanto às direções obrigatórias da aplicação. Em outras palavras, o designer só torna visível à medida em que o usuário avança nos caminhos da aplicação (telas e links) aquilo que é necessário até o ponto em que o usuário está. Isto é mais que programação a eventos. É programação dirigida.
E dentro deste conceito de programação dirigida, os campos e controles correspondem às tags de HTML. Tudo o que é visível e operacional em telas Web é definido por meio das tags. Estas tem os eventos específicos, ligados às ferramentas operacionais de que o hardware de um computador cliente possui, ou seja, teclado e mouse. Recentemente se acrescentou o “touch screen”, mas no final ele se traduz nos eventos comuns de mouse (click, over e out).
Mas na busca por vezes obsessiva de abranger tudo, alguns fabricantes resolveram “customizar” suas tags (tags proprietárias), lotando-as de atributos, afastando-se da programação a objeto e corrompendo o padrão W3C. A desvantagem é a não portabilidade e a dependência de um servidor específico. Este é o caso da plataforma .NET e Cold Fusion. O conhecido site superdownloads, que disponibiliza softwares para os usuários e profissionais de informática abandonou o Cold Fusion, justamente porque ele é um padrão proprietário, baseado em tags. Também as aplicações em .NET, se migradas para outra plataforma, tem que ser totalmente refeitas, pois parte de sua “inteligência” está em tags.
Facilidade para o desenvolvimento de plugins
Depois dos objetos, surgiu o conceito de plugin. O plugin se agrega a um software como sua parte integrante, obedecendo à engine interna deste software. O Java não utiliza este conceito, como tampouco o ASP ou o .NET. Já o PHP possibilita tal coisa. Para se fazer coisa semelhante em Java, você desenvolve uma classe, e faz com que ela partcipe do ambiente do sistema em questão. No ASP e ASP.NET você tem que recorrer ao Delphi (Embarcadero) ou VBScript para fazer uma DLL e enfrentar os complicados procedimentos de registro desta DLL, coisa possível somente para um suporte capacitado.
Tudo pode ser contornado em programação, mas existe o custo do tempo necessário.
Funções sem excessiva tipagem
Se já é trabalhoso conceber as regras de negócio de um sistema ou aplicação, mais ainda é ter que observar os tipos das variáveis de retorno dos métodos e extrair os seus elementos. Temos os dois extremos. De um lado está o ASP e o PHP, que não exigem conhecimento de tipos, e do outro está o Java, em que temos que “tropeçar” a todo momento em mensagens de tipos não correspondentes (type mismatch).
Alguns minutos de teste de algumas linhas de programa em Java podem enervar um programador a ponto de ele se arrepender da linguagem escolhida. A simples definição de uma classe exige o planejamento dos tipos de entrada e tipos de saída. Existem vários níveis de intermediários para um resultado nesta linguagem.
Hoje, com as exigências de prazos tão apertadas, ninguém pode se dar ao luxo de planejar com tanta rigidez os tipos dos diversos parâmetros exigidos e retornados. Para documentação é ótimo, mas para produtividade é sofrível.
Funções nativas para leitura de arquivos no servidor (texto)
Algumas vezes precisamos armazenar informações temporárias no servidor. Os cookies foram concebidos para isto. Mas, pela paranoia dominante da segurança, eles tem seus efeitos bloqueados por default nas regras de segurança da maioria dos Firewalls do mercado. Sempre passamos pela situação de necessidade de armazenamento ou de objetos completos ou de arranjos temporariamente numa aplicação Web robusta. A solução são os arquivos temporários. Eles são importantíssimos na comunicação de duas aplicações Web que não compartilham nem o espaço de uma Sessão e nem de Aplicação.
O Java permite tal coisa, mas é preciso configurar a segurança do servidor em relação à linguagem. O ASP permite também, mas o IIS precisa ser configurado. O PHP proporciona comandos dos mais simples para esta finalidade, inclusive o armazenamento de objetos inteiros. A segurança necessária é configurada simplesmente pelas autorizações de arquivos (permissões).
Funções nativas para manipulação de arquivos comprimidos (ZIP)
Hoje temos servidores com alta capacidade de armazenamento de arquivos. O tamanho não deveria ser preocupação. Mas em se tratando de Web, com várias requisições, ter o arquivo comprimido é uma vantagem. A única linguagem que possui esta característica é o PHP. Em Java é preciso baixar um pacote na Internet. ASP ou ASP.NET não possuem, e dependem de chamadas ao sistema operacional.
Funções nativas para manipulação de arquivos PDF
O formato PDF tornou-se realmente um padrão, a ponto de se exigir, em certos sistemas, que os relatórios já saiam neste formato, pois se presta a proteger o resultado e também poder ser salvo em seu formato original.
A primeira biblioteca para este fim (FPDF) surgiu para o PHP, e depois a funcionalidade foi incorporada na forma de funções nativas. Para o ASP e Java, é preciso baixar um pacote e instanciar na forma de objetos, para depois se usar.
Manipulação simplificada de arrays
Quando se obtém um recordset (dataset) produto de uma query ao banco de dados, é altamente desejável extrair os resultados como se fossem itens de um arranjo. Quando se quer armazenar valores como se fossem uma estrutura, mesmo sem o auxílio de tabelas, o arranjo é a melhor solução. Por vezes o arranjo atua como um registro de banco de dados.
Em Java, esta manipulação fica na dependência de algo chamado serialização, de difícil compreensão e manuseio. Em ASP, os recursos para se fazê-lo são praticamente nulos. Em PHP esta manipulação é extremamente facilitada por instruções nativas.
Manipulação simplificada de datas
O formato de data se tornou extremamente importante, pois tudo, hoje em dia, envolve prazos, datas limite e outras características do registro de informações. Esta é uma característica que se refere mais aos bancos de dados, e não à linguagem. Como o banco de dados que registra a data em termos mais inteligíveis (ano, mês e dia) e inteligentes é o Mysql, e a linguagem que mais se preocupa com o acesso a este banco é o PHP, este último procurou se adequar ao máximo a este formato, e proporciona um conjunto de funções para acessar mais eficientemente este formato.
A linguagem em que o custo programacional para recuperação de datas é maior é a linguagem Java. Esta se preocupa com tantos aspectos que uma data pode assumir, que o programador fica confuso. Ela peca realmente pelo excesso. Também o processo de “deprecação” de funções data nesta linguagem é muito frequente. Uma função para extrair determinada parte da data muda inesperadamente quando se lança uma nova versão, deixando o programador abandonado.
Manipulação nativa de expressões relacionais (para check e parsing)
A linguagem Java possui recursos para isto, em vista de sua abordagem minimalista de programação. Em ASP é preciso instanciar o objeto Regexp. Em PHP existe uma instrução nativa para fazê-lo, além da facilidade provida pelo retorno deste teste em um arranjo.
Query Return by array
Esta expressão significa “Retorno do resultado das queries em arranjos estruturados da linguagem e não em objetos”. Isto se justifica pelo fato de que as operações complexas são melhor executadas pelo conceito de métodos e propriedades dos objetos. Mas o retorno, para uso imediato, deve se enquadrar nos conceitos mais comuns das linguagens mais comuns, em uma forma fácil de se manipular. E a forma mais fácil de se manipular um retorno estruturado como é o retorno de uma query é o arranjo.
O Java oferece um caminho tortuoso para manipular o retorno da query, pois se você já armazenou o conteúdo em uma estrutura tipada, porque ter que novamente reconhecer o tipo de variável campo a campo. O ASP retorna os valores facilmente em um objeto, mas a data precisa ser tipada. O PHP simplesmente retorna todos os valores num arranjo, proporcionando o uso de cada um sem trabalho.
Tratamento nativo do protocolo de e-mail
Os sistemas da atualidade, como explicamos no critério “Manipulação simplificada de datas” dependem de prazos. É preciso, frequentemente (quase diariamente) dar satisfação a fornecedores, clientes e gerentes. Então, a integração com a ferramenta de e-mail é extremamente necessária. Em Java, obter um canal com o servidor SMTP ou POP3 é uma verdadeira novela, e provavelmente é melhor fazê-lo baixando alguma classe na Internet, sujeita a bugs. Em ASP, é preciso baixar um objeto (geralmente o ASPemail). Em PHP, a manipulação dos protocolos de e-mail é nativa, ainda oferecendo a possibilidade de se registrar em bancos de dados os parâmetros de envio (datas, nomes dos anexos e até o texto do e-mail). Basta dizer que o serviço de e-mail “horde” é baseado em PHP.
Em todos os casos, é preciso ter um servidor com este serviço em execução.
Tratamento nativo do protocolo de transferência de arquivos (FTP)
O envio de arquivos por FTP é algo muito desejável, pois o tamanho dos anexos de e-mail tem limite por provedor. Em Java e ASP é preciso baixar pacotes para se poder fazer isto em suas scripts. Já em PHP, esta característica é preenchida por funções nativas.
Em todos os casos, é preciso ter um servidor com este serviço em execução.
Treinamento rápido
Seja qual for a linguagem, ambiente ou tipo de sistema, Web ou não, a curva de aprendizado e domínio da linguagem precisa ser bem satisfatória. Ao treinar uma equipe, é preciso ter em mente o “retreinamento”, ou seja, se um membro arranja outro emprego, um novato precisa ser treinado rapidamente.
A linguagem cuja curva e prazo de aprendizado é maior é, sem dúvida, o Java. Em seguida vem o .NET, com sua série de tipos de abordagens (C#, J# e ASP.NET). Depois vem o ASP clássico. E com a curva de aprendizado menor vem o PHP, pois a criação de objetos se resume a igualdades. O acesso a banco de dados se resume a funções, sem as instanciações do ASP ou ASP.NET.
Nenhum comentário:
Postar um comentário