1
resposta

[Projeto] Primeira aplicacao em kotlin e primeiva vez na linguagem

Comecei hoje a fazer um experimento comigo mesmo: me desafiar a estudar mais de uma linguagem de programação por dia, dividindo certinho cada horário que vou me dedicar a cada uma delas. Isso porque eu estava sentindo que focar apenas em uma linguagem me fazia limitar o quanto eu poderia aprender. Por isso, decidi fazer este experimento de passar duas semanas estudando algumas linguagens, mas ainda assim mantendo um foco principal em uma delas, que neste caso é o Java.

Porém, nesta semana dei uma pausa nele e estou focando em outra que vou chamar de "Sublinguagem", que é o SQL. Isso porque agora, como vou entrar nas partes mais avançadas e trabalhar com frameworks como o Spring Boot Data, quero aprender a base do SQL e também outras ferramentas que dependem dele, como PostgreSQL e MongoDB, assim adquirindo conhecimento para lidar tanto com bancos relacionais quanto não relacionais.

E já que SQL, ao meu ver, não é tão complicado — a sintaxe é bem simples de aprender — resolvi também estudar outras linguagens que podem me ajudar mais para frente, como Kotlin e Go. Futuramente, pretendo dar uma olhada também na parte de frontend, explorando Angular, TypeScript e Tailwind. No backend, quero estudar AWS Cloud, Docker Compose e Terraform. Sei que isso vai levar tempo, mas quero ver se consigo quebrar o paradigma de estudar apenas uma única linguagem.

Com isso, este foi o meu resultado: meu primeiro código em Kotlin (depois, claro, do famoso "Hello World!").

Kotlin GameFinder:

package com.gamefinder.app

import com.gamefinder.app.infra.HttpExecute

fun main(args : Array<String>) {
   val client = HttpExecute.Generate.http()

   println("Enter a id:")
   val id = readLine()
   val json = client.body(id)

   println("Json: $json")
}
package com.gamefinder.app.infra

import com.gamefinder.app.exceptions.HttpRequestException
import java.io.IOException
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse

class HttpExecute(
   private val client: HttpClient,
) {
    private val url = "https://www.cheapshark.com/api/1.0/games?id="

    fun <R> execute(
        id: String? = null,
        function: (HttpResponse<String>) -> R
        ): R {
        try {
            val request = HttpRequest
                .newBuilder(URI.create(url + id))
                .build();
            val response = this.client
                .send(
                    request,
                    HttpResponse.BodyHandlers.ofString(),
                )

            return function(response)
        } catch (e: InterruptedException) {
            Thread.currentThread().interrupt()
            throw HttpRequestException("Thread interrupted when trying to access the URL: ${url + id} | ${e.message}" );
        } catch (e: IOException) {
            throw HttpRequestException("Error when accessing the URL: ${url + id} | ${e.message}");
        }
    }

    fun body(url: String?): String {
        return execute(url) { response -> response.body() }
    }

    companion object Generate {
        fun http(): HttpExecute {
            return HttpExecute(HttpClient.newHttpClient());
        }
    }
}

Dei uma lida na documentação dele, vi algumas coisas em fóruns e usei um pouco o ChatGPT para tirar algumas dúvidas, mas nunca pedi a resposta direta para a questão. O resultado está acima.

1 resposta

Oi, Rick! Como vai?

Agradeço por compartilhar seu código.

Achei muito legal você ter se desafiado a explorar várias linguagens e já trazer um projeto em Kotlin que consome uma API. Esse tipo de iniciativa ajuda bastante a consolidar a lógica e entender os conceitos de cada tecnologia.

Só tome cuidado para não misturar muitos assuntos de uma vez, porque pode acabar dificultando a prática e a fixação dos conteúdos.

Continue firme nos estudos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!