Parsing Java Bytecode with Python (JelloVM Ep.01)

preview_player
Показать описание
References:
Рекомендации по теме
Комментарии
Автор

"Money is not the most important thing in your life, what's important is knowing how to parse JVM" -Tsoding

vivekascoder
Автор

I like how he reflexively keeps typing semicolons at the end of lines and correcting it

calebharper
Автор

I just wanted to say how much I enjoy watching your videos. It is the perfect balance between top quality educational content and really funny/entertaining jokes mixed in. You truly are a one of a kind engineer. Keep up the fantastic work and I hope things are not too bad for you in Russia. Tsoding rocks 👍

mandrak
Автор

in python3 with f strings you can do
foo = "a"
print(f"{foo=})
which will print foo = "a"
basically if you put an equal sign at the end of the block it will evaluate the expression and return its value and the expression itself as string
great video as always bro

simonetii
Автор

We had Jython in the past (java running python programs) now Pava (?) Python running Java. Letsgoo

desertfish
Автор

He hadn't uploaded since the Russian mobilization started. I had started to worry for him. Glad to see he is alright.

smergibblegibberish
Автор

Glad to see you back. I hope you are safe from everything.

jozef_kascak
Автор

Glad to see you back keep up the content, I love watching it in the background at work!

mrmaniac
Автор

Some reasons why the binaries contain the class names:
- debugging output, e.g. exception stacktraces
- reflection
- methods that print the class name, including default toString implementations and getClass().getName()

vader
Автор

2:52 He checked the date to say what year it is

Fikerus
Автор

Ooh man my favorite channel makes a video about my favorite language java best day ever

eboubaker
Автор

You are a wizard, love watching you work

accountname
Автор

35:00 - Lol welcome to the spec. It literally says in that page they regret some of these decisions. But yeah, its not a horribly complicated spec, just got some quirks.
43:30 - Arrays of 'constants' of each type would actually be kinda cool.

mattcoley
Автор

18:30 I think the "intention" of Windows (or DOS) having both line feed and carriage return together is a simpler printer driver, and laziness. Early matrix printers had different commands for line feed (moving the paper) and carriage return (returning the print head to the home position, this is where the name comes from). With having both commands directly in the text document, a printer driver can simply send the file byte by byte to the printer and it does the right thing. Unix and Mac preferred a single command inside text files, since in a text document there is not really a concept of carriage return or line feed, just new line.

For parsing binary data from bytes, I recommend struct.unpack. It is a standard package, which allows for easier reading (and writing) of entire structures and can handle endianness as well.

LordMardur
Автор

Really entertaining video, looking forward to the rest of this!

bassguitarbill
Автор

This was interesting to watch and I learned a lot. Thank you! :)
You're clever and a quick thinker.

TheBigLou
Автор

Being an old guy, I know why there are \r and \n... It's from the teletype machine days. \r is a carriage return where the print head is physically returned to the start of the line. \n is a line feed where physically scrolled the paper up one line. No collusion involved. ;)

jasonkary
Автор

dude, great to see you're safe! was worried when you went quiet after the draft was announced!

morgengabe
Автор

Such a shame we had to give up Turing completenss to get Unicode in python 3...

Btw, Java 18 or 19 finally got "script" files, where you can just start writing code without a public static void main and it just works™

filipmajetic
Автор

I love that there is the development process captured in this!
Building custom JVM is cool, but I like to see you adding new features and suddenly saying "this can go to a separate function".
It is such a great learning material! I wish something like this was done 15 years ago when I started to code :)