JavaRush /Blogue Java /Random-PT /Pausa para café #93. Como funciona a classe String em Jav...

Pausa para café #93. Como funciona a classe String em Java. Aprenda como implementar uma interface web em Java

Publicado no grupo Random-PT

Como funciona a classe String em Java

Fonte: DZone Recentemente me deparei com a seguinte pergunta em um fórum: “Quantos objetos String são criados aqui ? Um ou dois?".
String langName = new String("Java");
Fiquei curioso para saber como os outros responderam, sabendo que é uma questão complexa, principalmente se não se tem muito conhecimento de como funciona a classe String em Java. E então, mergulhei na seção de comentários. Pausa para café #93.  Como funciona a classe String em Java.  Aprenda como implementar uma interface web em Java - 1Para minha surpresa, entre os comentadores houve pessoas que escolheram “Um” como resposta correta, mas muito mais pessoas responderam “Dois”. Por um segundo, comecei a duvidar do meu conhecimento sobre Strings . A resposta correta é que tudo depende das circunstâncias. A questão não é suficientemente clara e deixa espaço para debate. Eu reformularia assim:

1. Quantos objetos Java String são criados na memória quando esta instrução é executada?

Existe apenas uma resposta.

Quantos objetos Java String permanecerão na memória após a execução desta instrução?

A resposta é dois. Espero que a incerteza tenha desaparecido assim que verifiquei o despejo de memória do programa com uma declaração como o exemplo acima. Pausa para café #93.  Como funciona a classe String em Java.  Aprenda como implementar uma interface web em Java - 2O despejo de memória do programa na imagem acima mostra a existência de dois objetos String com o mesmo conteúdo. Isso prova que chamar o construtor da classe String e passar uma string literal como argumento resulta na adição de dois objetos ao heap de memória: um na memória regular (não-pool) e outro no String Constant Pool (SCP), um área na memória que também faz parte do heap. As dificuldades começam após a adição. Chamar o construtor sempre resulta na colocação de um novo objeto em uma área que não seja do pool. Mas o argumento do construtor, que é uma string literal, também é um objeto e é criado e armazenado no SCP durante o carregamento da classe, desde que o conjunto de strings não contenha strings com o mesmo conteúdo. A Especificação da Linguagem Java afirma que “literais de string — ou, mais geralmente, Strings que são os valores de expressões constantes (§15.28) — são “internados” para compartilhar instâncias únicas usando o método String . Como uma string em Java é literal e, portanto, representa o valor de uma expressão constante, ela é agrupada. Para tornar isso ainda mais óbvio, vamos reescrever o código apresentado no início do artigo da seguinte forma:
String java = "Java";
String langName = new String(java);
Agora vamos voltar à questão principal. A instrução a seguir criará um ou dois objetos String :
String langName = new String("Java");
Para responder a essa pergunta e tirar qualquer suspeita, vejamos o bytecode do método principal:
public static main([Ljava/lang/String;)V
   L0
    LINENUMBER 11 L0
    NEW java/lang/String
    DUP
    LDC "Java"
    INVOKESPECIAL java/lang/String. (Ljava/lang/String;)V
    ASTORE 1

   L1
    LINENUMBER 14 L1
   FRAME APPEND [java/lang/String]
    GOTO L1

   L2
    LOCALVARIABLE args [Ljava/lang/String; L0 L2 0
    LOCALVARIABLE langName Ljava/lang/String; L1 L2 1
    MAXSTACK = 3
    MAXLOCALS = 2
Na linha 6 você pode ver o comando LDC (Load Constant). Ele carrega um elemento do conjunto de constantes de string na pilha. Isso significa que no momento em que o construtor é chamado, o literal Java, que também é um objeto, já foi adicionado ao pool. Isso aconteceu ao carregar uma classe. Assim, chamar o construtor da classe String com uma string literal cria apenas um objeto e o coloca em um local de memória não agrupado.

Aprenda como implementar uma interface web em Java

Fonte: Dev.to O mundo do JavaScript oferece frameworks web úteis e divertidos, não há dúvida disso. Existe uma alternativa interessante para desenvolvedores Java - a estrutura Vaadin de código aberto . Com ele, você pode implementar facilmente uma interface gráfica de usuário (GUI) para a web usando apenas a linguagem de programação Java e nada mais. Você não precisa escrever uma única linha de HTML ou JavaScript. Uma imagem vale mais que mil palavras: Pausa para café #93.  Como funciona a classe String em Java.  Aprenda como implementar uma interface web em Java - 3

Como Vaadin funciona?

À esquerda da captura de tela você vê uma classe Java. Este código é executado em um servidor como Apache Tomcat, Eclipse Jetty ou qualquer outro contêiner de servlet. Você pode usar a API fornecida pela plataforma para criar componentes de interface do usuário (UI) , como campos de texto, caixas de combinação, grades de dados, seletores de data, campos de upload e muitos outros. Você pode combinar esses componentes para criar uma visualização (também conhecida como página ou UI), usando layouts para organizar os componentes da interface do usuário (UI) verticalmente, horizontalmente ou de qualquer outra forma usando CSS. No exemplo anterior, criamos um TextField e um Button adicionando-os ao VerticalLayout . Quando a visualização estiver pronta, você poderá abri-la por meio de uma URL usando a anotação @Route . Neste exemplo, disponibilizamos em http://localhost:8080/hello usando @Route("hello") . O aplicativo Vaadin é um aplicativo da web em Java. A estrutura fornece uma implementação de Servlet ( VaadinServlet ) que lida com solicitações e respostas HTTP para você. Este servlet verifica classes Java marcadas com a anotação @Route para exibir a visualização correta no navegador. Quando um aplicativo Vaadin é solicitado pela primeira vez, Vaadin responde com um arquivo JavaScript leve que serve como mecanismo cliente. Este mecanismo se encarrega de processar eventos no navegador e enviá-los ao servidor como mensagens JSON. O objeto VaadinServlet processa solicitações e retorna respostas JSON de forma semelhante ao mecanismo do lado do cliente. O mecanismo então usa essa mensagem para atualizar os elementos da página que precisam ser atualizados, se houver. Vaadin usa uma sessão HTTP para armazenar uma árvore de componentes que contém o estado da interface do usuário. Coisas como componentes formam a representação e seus estados (ativado/desativado, legenda, valor, etc.). Tudo isso proporciona um nível de segurança que vale a pena mencionar. Como a lógica da interface do usuário está no servidor, ela não está acessível aos invasores. As verificações são realizadas no servidor. Por exemplo, se um botão for desabilitado usando setEnabled(false) , então este não é apenas um recurso cosmético no navegador - o servidor não executará nenhuma lógica nos ouvintes de clique adicionados ao botão desabilitado, evitando que invasores explorem ferramentas de desenvolvedor no navegador para alterar o estado habilitado ou chame VaadinServlet para simular um clique do mouse (evento de clique).

O uso do Vaadin é gratuito?

Sim. Vaadin é uma estrutura de código aberto publicada sob a licença Apache 2.0. Você não precisa comprar nada para criar aplicativos da web completos com ele. Existem componentes comerciais que melhoram o desempenho, mas não são obrigatórios. Por exemplo, existe um designer visual e um componente CRUD para ajudá-lo a criar visualizações ainda mais rapidamente. Você pode experimentar esses componentes gratuitamente antes de assinar.

Vaadin é um substituto para JSP e JSF?

Sim. Ele pode ser usado como um substituto para estruturas JSP, JSF e até mesmo JavaScript como Angular. Muitos clientes Vaadin migraram com sucesso dessas tecnologias para Vaadin.

Vaadin tem suporte para Spring e Jakarta EE?

Sim. Vaadin tem integração oficial com Spring e Jakarta EE (anteriormente Java EE). Você pode adicionar Vaadin como uma dependência ao criar um novo projeto Spring Boot usando Spring Initializr. Para Jakarta EE, você pode baixar um exemplo simples de Hello, World que usa Jakarta EE. No momento em que este artigo foi escrito, apenas o Jakarta EE versão 8 era compatível.

Quem usa Vaadin?

Muitas empresas da Fortune 500 usam Vaadin, bem como startups de sucesso e mais de 200 mil desenvolvedores em todo o mundo. Confira o Guia de início rápido e outras documentações do Vaadin .
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION