Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pre-Java 1 class files #1

Open
Marcono1234 opened this issue Aug 22, 2019 · 6 comments
Open

Pre-Java 1 class files #1

Marcono1234 opened this issue Aug 22, 2019 · 6 comments

Comments

@Marcono1234
Copy link
Contributor

Hello,
it appears https://web.archive.org/web/20000824024201/http://java.sun.com:80/applets/archive/beta/beta.zip contains two pre-Java 1 class files with minor version: 2, major version: 45:

  • Escher/classes/escherpaint.class
  • Escher/classes/generic_paint.class

I hope they are useful for you (@Konloch, maybe you are interested as well?). Do you already have pre-Java 1 files for testing?

@leibnitz27
Copy link
Owner

Excellent! That helps with https://twitter.com/LeeAtBenf/status/1136035843955732486 !

@leibnitz27
Copy link
Owner

Happy to say CFR handles both of those nicely ;)

@Marcono1234
Copy link
Contributor Author

Marcono1234 commented Aug 22, 2019

Also it appears the class file version change must have happened before v1.0b1, since the README file of https://web.archive.org/web/19961219153722/http://www.mcp.com:80/que/javarc/se_java/macjdk.zip claims this is its version and its classes are already using minor version: 3.

And here are some more minor version: 2 class files:

As you might have noticed from the timestamps, these files are still live available! I am trying to archive more of these pages, but it appears the web archive has some caching issues.

What is also interesting is that apparently between alpha1 and alpha2 the OAK rename happened:
https://web.archive.org/web/20190822203813/http://www.mit.edu/afs.new/sipb/user/marc/hotjava/doc/changes/changes.html


Edit: It appears this might actually be your "rich seam of ancient class files". It appears that under classes all the class files are present, e.g.: https://web.archive.org/web/20190822214533/http://www.mit.edu/afs.new/sipb/user/marc/hotjava/classes/java/lang/IOException.class

https://web.archive.org/web/20190822214133/http://www.mit.edu/afs.new/sipb/user/marc/hotjava/doc/rpi/rpi_2.html indicates that there is also an include folder. And at this point it would not suprise me if the sources and all the java tools (javac, javadoc, ...) are present as well, though I was not able to find them yet.


Edit 2: Yes, javac is present:
https://web.archive.org/web/20190822225509/http://www.mit.edu/afs.new/sipb/user/marc/hotjava/bin/javac
https://web.archive.org/web/20190822231416/http://www.mit.edu/afs.new/sipb/user/marc/hotjava/bin/sun4/javac
https://web.archive.org/web/20190822231444/http://www.mit.edu/afs.new/sipb/user/marc/hotjava/bin/sun4/java


Maybe it would make sense to contact MIT, or JDK members so they contact MIT. I guess everyone would be interested in the complete content of this folder. What do you think?

@leibnitz27
Copy link
Owner

Excellent jarchaeology! <-- if that's not a thing, it is now.

These are some great resources, thanks.

@Marcono1234
Copy link
Contributor Author

Marcono1234 commented Jan 9, 2020

I have found complete versions of HotJava 1.0a2 some time ago and created a repository for them now: https://github.com/Marcono1234/HotJava-1.0-alpha

Hopefully that is useful for you.

It appears CFR (and other decompilers) makes some mistakes due to different usage of instructions (ifne being used for null checks), probably does not consider the different meaning of access flag 0x40=ACC_THREADSAFE (as mentioned by you on Twitter) and fails decompiling a certain class (SortItem.class).
Are you still interested in this? Given that this version is not officially supported by Oracle / OpenJDK anymore and that there are only a small amount of class files of this version, I could totally understand if you would like to work on different issues instead.

@leibnitz27
Copy link
Owner

That's amazing. Thanks!

It is, of course, a terrible waste of time. Which is what all hobby programming is supposed to be! Cheers! ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants