#What Languages and Data Formats Should Java Developers Know?

126 messages · Page 1 of 1 (latest)

deep anvil
#

I'm looking for a precise answer about languages and markup/data languages that are commonly used alongside Java or are closely related to Java ecosystem duke_thumbs_up .

So far, I know about Kotlin and Apache Groovy as languages, as well as SQL, XML, JSON, and YAML, which Java developers frequently work with.

Are there any other important languages, for scripting or markup/configuration languages that Java devs commonly use and that would be worth noting?

If im not wrong, Java can build for any platforms: Web, Mobile, Desktop, CLI based.

Thanks

scarlet geyserBOT
#

<@&987246964494204979> please have a look, thanks.

#

Here is an AI assisted attempt to answer your question 🤖. Maybe it helps! In any case, a human is on the way 👍. To continue talking to the AI, you can use </chatgpt:1108714622413963314>.

#
TJ-Bot
I'm looking for a precise answer about languages and markup/data languages that are commonly used alongside Java or are closely related to Java ecosystem <:duke_thumbs_up:1461413445978292264> . So far, I know about **Kotlin** and **Apache Groovy** as lang

Java developers typically work with a core set of languages and data formats that complement the Java ecosystem:

Languages:

  • Java: Obviously the main language.
  • Kotlin & Scala: Modern JVM languages interoperable with Java, popular in certain contexts.
  • Groovy: Dynamic language on JVM, widely used for scripting and build automation (e.g., Gradle).

Markup/Data Formats:

  • XML: Historically very significant for configuration (Spring, Maven).
  • JSON: Ubiquitous for APIs and data interchange; libraries like Jackson and Gson are common.
  • YAML: Gaining traction for configuration (Spring Boot, Kubernetes manifests).
  • Properties files: Classic format for configuration.

These languages and formats are most commonly encountered in Java projects and tooling.


Useful links:

fallen birch
#

Besides markdown, which is very easy to pick up and it useful for writing lightweight-yet-structured documents, I've seen SpEL used a handful of times inside of our spring apis.
Also, knowing bash is useful for scripting.

Just pick up stuff as you need it and keep building

fervent nacelle
#

pl/sql, markdown

#

or pg/sql

#

xml, but the javafx tags

#

env file

#

nginx config

#

bash and systemd format

#

docker format/docker-compose

#

git ci of your choice

deep anvil
#

subquestion: is it good to mix kotlin and java files in a project?

#

is it even possible ?

#

never tried it

fervent nacelle
#

yeah you can do it, you make a module in 1 lang, then include it in the other

#

I use gradle to do it personally

fervent nacelle
#

namespace must be unique over all your modules and projects

deep anvil
#

isn't that for JS ?

wet hill
#

toml? No

#

Its like YAML, but linear

fervent nacelle
deep anvil
#

i see what u mean

#

hmm my purpose isn't towards ci/cd or devops

fervent nacelle
#

just dev?

deep anvil
#

yeah and i know that it's sometimes necessary

fervent nacelle
#

you kinda need to be able to use your local docker environment

#

many place will just have each dev have a full dev environment like a copy of prod

deep anvil
#

what about Jakarta EE

#

is it dead or what ?

#

or is it sort of framework

wet hill
scarlet geyserBOT
#

Closed the thread.

scarlet geyserBOT
#

Activities have been reset.

deep anvil
#

what about this : Scala!

fervent nacelle
#

try clojure for fun

#

it break your mind

#

for a week or two

#

mind opening experience

wet hill
# deep anvil what about this : Scala!

There's plenty of languages built to run on the JVM, you just have to pick your poison, because none of them will be built exactly for what you need; all of them have their ups and downs

rugged dagger
#

clojure is at least a different beast

#

though i would expand beyond the jvm at some point

wet hill
rugged dagger
#

for context, my job is in clojure

#
(println "Hello World")

is enough

#

the :gen-class stuff is fluff

wet hill
# deep anvil interesting

If you're looking to learn a new language, I'd probably recommend to learn Kotlin since its a simpler language than Java, and is also interoperable with Java so you can use Java's libraries with a simplified java-like syntax

rugged dagger
#

(its 80% java though)

#

the other one I still want to find time to learn is https://flix.dev

Flix

Flix is a principled effect-oriented functional, imperative, and logic programming language developed at Aarhus University and by a community of open source contributors.

#

thats a haskell-ey one, but with some fun wrinkles like effect types and "first class datalog"

wet hill
#

For example, Hello World in Kotlin vs Java

fun main() {
    println("Hello, World!")
}
// Java 25+ only
void main() {
  IO.println("Hello, World!");
}

// legacy way
class Main {
  public static void main(String[] args) {
    System.out.println("Hello, World!");
  }
}
rugged dagger
#

but elm is still my go-to for haskell-likes

rugged dagger
#
fun main() {
    println("Hello, World!")
}
void main() {
  IO.println("Hello, World!");
}
wet hill
rugged dagger
#

but regardless - not much to learn there

#

neat things for projects, if you like it you like it, but it won't really broaden your horizons

#

definitely go off in a different direction if you've been in java land too long

fervent nacelle
#

no no, clojure is peak

#

it change your brain

rugged dagger
#

prolog, erlang

#

just do something different

rugged dagger
#

or things that you already understand and/or are comfortable with?

wet hill
rugged dagger
#

I learn things to either understand how they work or to expand my portfolio in order to eventually get a job,
Ah yeah, so that doesn't really enter my head

#

the portfolio part

#

its a self-defeating strat

wet hill
fervent nacelle
#

if you never made projects in the lang and you get employed for it, good luck.

wet hill
rugged dagger
#

a lot of ways, but to start a list:

  • By only learning popular things, you maximize the number of people you are implicitly competing against. Nothing is special about a dev that knows Java and Kotlin
  • A lot of patterns in smaller languages translate to sometimes slightly awkward patterns in more popular ones. There is a lot of value in knowing things like the accumulator pattern or having the ability to write a loop using only recursion
  • People come from different backgrounds. The job is 80-90% communication and having a frame of reference for "How we did it in XYZ" helps a lot with that. Especially if you can, say, explain why kotlin approaches something a different way/the tradeoffs.
  • It isn't always obvious when something will become useful. It is much more effective to learn a wide variety of things than to rest on your laurels
  • A lot of aesthetic preferences people pick up are harmful. Being forced to work in "ugly" things has merit
#

If you learn prolog, you'll have a good foundation for datalog

#

if you learn datalog you'll have a much deeper understanding of SQL

#

just knowing what is and is not possible requires broad experience.

#

the goal of learning is to expand your horizons

#

and that will loop back to being better at your job, but you can't just be a slave to bullet points on job listings.

#

i saw a conference talk last week about a big distributed system someone built on the jvm

#

the design was heavily inspired by erlang's OTP

#

thats the kind of hat trick that is hard to pull off if you wrote off erlang because its ugly and there aren't many jobs

wet hill
# rugged dagger a lot of ways, but to start a list: * By only learning popular things, you maxi...

I'm unfamiliar with datalog or prolog, but my roadmap was essentially:

  • HTML/CSS/JS
  • Java
  • Python
  • C

And with those languages I built various apps with other languages or file formats, like:

  • YAML/TOML
  • JSON
  • SQL

Those languages helped me learn the basics in:

  • Web development
  • Object-oriented programming
  • Low level programming

The portfolio part was mainly because the way I learnt was essentially:

  1. Find something cool and interesting (for example, Microsoft OneDrive)
  2. Understand how it works under the hood
  3. Reproduce my own version

Which would output a fairly ugly, yet working prototype of said thing I want to design. So instead of simply showing up said prototype, after learning and optimizing how it can work, I recreate it, from scratch, as a portfolio piece and put it on my Github in order to showcase what I built and what I learnt by building said project

rugged dagger
wet hill
#

Move on to the next project, to learn more about something that interests me

#

For example, I got bored of making Java plugins over the summer, so I decided to code my own operating system to finally learn how C works, how pointers work, and essentially how low level programming works

rugged dagger
rugged dagger
#

like after you learned Python your next priority wasn't Ruby

#

i mean you can learn Ruby, but its pretty similar to Python

#

but learning C had value because it expanded what you can do

#

there are more categories of things to dive into

#

still youd learn ruby as a means to do something else, or if it caught your eye

wet hill
# rugged dagger still youd learn ruby as a means to do something else, or if it caught your eye

True, but there's no point in learning a similar-ish language if your objective is just to learn (except if its for a job). Once you know the core fundementals of OOP, interpreted languages and low level programming, other languages become much more easier to learn; in this case you wouldn't want to learn Clojure if you already know Java, because they're both JVM languages, and Java is the more popular one so in terms of job openings Java is superior then Clojure

rugged dagger
#

i'm big on "never avoid learning something"

#

and i'll tell you, there are significant differences in program structure

#

and more job openings doesn't really mean what people think it means

#

remember its not just demand, its supply and demand

#

there are a lot of java jobs and a lot of java programmers

#

there are few clojure jobs, but also few clojure programmers

#

what matters isn't the absolute numbers, its the ratio

#

so like Metabase, where I work, hires internationally

#

getting good clojure programmers is hard

#

so they pay good money for them and are willing to offer full remote

wet hill
rugged dagger
#

Not the easiest to reach chart, but notice how scala, ruby, elixir, clojure, and erlang are basically on another tier w.r.t. pay?

#

(this is the 2024 stack overflow survey)

#

learning old / seldom used languages can greatly benefit your career

#

both in the ways i was describing before, and directly via a better paying job

#

and just being qualified for more jobs

inner copper
#

You're also using x86 in segmentation mode instead of 64 bit long mode where everything is done via paging, wrote a pic timer instead of either apic timer or hpet driver, keyboard via serial instead of usb (i shall update as i read more). If you're career maxing why are you doing everything the legacy way?

inner copper
wet hill
#

Most of the low level stuff was actually AI assisted