0Pricing
Clojure Functional Programming & JVM Backend Development · Aula

Chamando Java a partir de Clojure

Descubra como invocar métodos Java, acessar campos e instanciar objetos diretamente a partir do código Clojure.

Chamando Java a partir de Clojure é uma aula grátis de Clojure Functional Programming & JVM Backend Development no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Clojure Functional Programming & JVM Backend Development, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Clojure Functional Programming & JVM Backend Development inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em inglês.

Clojure & Java: Best Friends!

Clojure runs on the Java Virtual Machine (JVM), which means it can use all the amazing Java libraries directly! This is called Java Interop.

  • Access Java classes and methods.
  • Leverage the vast Java ecosystem.
  • Combine Clojure's power with Java's stability.

This lesson will show you how to call Java code from Clojure.

Creating Java Objects

To use a Java class, you often need to create an instance of it. In Clojure, you can do this using a special syntax.

  • Use (new ClassName args) or the shorthand (ClassName. args).
  • The . after the class name is a convenient way to call a constructor.

Example: (java.util.Date.) creates a new Date object.

Demo: New Date Object

Try creating a new java.util.Date object. It will represent the current date and time.

(ns my-app.core
  (:gen-class))

(defn -main
  "Creates and prints a new Java Date object."
  [& args]
  (let [current-date (java.util.Date.)]
    (println "Current date:" current-date)))

Calling Static Java Methods

Static methods belong to the class itself, not to a specific object instance. You can call them directly on the class.

  • Syntax: (ClassName/staticMethodName args)
  • The / separates the class name from the static method name.

Example: (java.lang.Math/random) calls the random static method of the Math class.

Demo: Math.random()

Let's get a random number using Java's Math/random static method. It returns a double between 0.0 (inclusive) and 1.0 (exclusive).

(ns my-app.core
  (:gen-class))

(defn -main
  "Generates and prints a random number using Java's Math/random."
  [& args]
  (let [rand-num (java.lang.Math/random)]
    (println "Random number:" rand-num)))

Calling Instance Java Methods

Once you have an object, you can call its instance methods. These methods operate on that specific object's data.

  • Syntax: (.methodName instance args) or (. instance methodName args).
  • The . before the method name indicates an instance method call.

Example: (.getTime my-date) calls the getTime method on the my-date object.

Demo: Date.getTime()

Create a Date object and then call its getTime() method. This method returns the number of milliseconds since January 1, 1970, 00:00:00 GMT.

(ns my-app.core
  (:gen-class))

(defn -main
  "Creates a Date object and calls its getTime() method."
  [& args]
  (let [current-date (java.util.Date.)
        time-in-millis (.getTime current-date)]
    (println "Current date:" current-date)
    (println "Milliseconds since epoch:" time-in-millis)))

Accessing Java Fields

Java objects can have fields (variables) that store data. You can access these fields directly from Clojure.

  • Syntax: (.-fieldName instance) for getting a field's value.
  • For static fields, use (.-staticFieldName ClassName).

Example: (.-out System) accesses the out static field of the System class, which is a PrintStream.

Demo: System.out Field

The java.lang.System class has a static field named out, which is a PrintStream object. We can access it to print to the console.

(ns my-app.core
  (:gen-class))

(defn -main
  "Accesses System.out and prints a message using its println method."
  [& args]
  (let [out-stream (.-out java.lang.System)]
    (.println out-stream "Hello from System.out!")))

Quick Check: Java Interop

You've learned how to interact with Java classes. Which Clojure expression uses the ClassName. shorthand to instantiate a java.io.File object for the path "myfile.txt"?

Recap: Java Interop Basics

Great job! You've learned the fundamentals of interacting with Java from Clojure:

  • Instantiate objects: Use (ClassName. args) or (new ClassName args).
  • Call static methods: Use (ClassName/staticMethodName args).
  • Call instance methods: Use (.methodName instance args) or (. instance methodName args).
  • Access fields: Use (.-fieldName instance).

This powerful capability allows you to leverage the entire Java ecosystem within your Clojure projects. Next, we'll explore implementing Java interfaces.

Perguntas Frequentes

A aula “Chamando Java a partir de Clojure” é grátis?

Sim — o texto completo de “Chamando Java a partir de Clojure” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Clojure Functional Programming & JVM Backend Development, atualize para CoddyKit PRO. O curso de Clojure Functional Programming & JVM Backend Development inclui 4 aulas no total.

O que vou aprender em “Chamando Java a partir de Clojure”?

Descubra como invocar métodos Java, acessar campos e instanciar objetos diretamente a partir do código Clojure. Você pratica Clojure Functional Programming & JVM Backend Development com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Clojure Functional Programming & JVM Backend Development?

Nenhuma experiência prévia é necessária. Clojure Functional Programming & JVM Backend Development no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Chamando Java a partir de Clojure”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Clojure Functional Programming & JVM Backend Development?

Sim. Cada aula de Clojure Functional Programming & JVM Backend Development inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Chamando Java a partir de Clojure
  2. Implementação de interfaces Java
  3. Uso de bibliotecas e ferramentas Java
  4. Trabalhar com Coleções e Vetores de Java
← Voltar para Clojure Functional Programming & JVM Backend Development