3 ***DISCLAIMER***: _These notes are from the defunct k8 project which_
4 _precedes SquirrelJME. The notes for SquirrelJME start on 2016/02/26!_
5 _The k8 project was effectively a Java SE 8 operating system and as such_
6 _all of the notes are in the context of that scope. That project is no_
7 _longer my goal as SquirrelJME is the spiritual successor to it._
11 Actually instead of rewriting all of this, I am just going to fix what I do
12 not like about my existing code.
16 Made the attributes for classes and methods just be an individual list, that
21 The one thing I do not like is the ConstantPool class, the entries
22 specifically. I made the pool better by allowing it to be grown and having one
23 permanently attached to a class (no new junk). The bad remaining part is the
24 entries, I need a way to dynamically create the entry classes to my
25 specifications. There are annotation processors but I have never used that
26 stuff yet, and I am not too sure if it suits my needs.
30 Figured out a benefit of Java, in the case of NUMA systems and clusters where
31 there are potentially many different systems, they can all act as CPUs to
32 compute the same stuff even if they vary in architecture. Provided that all of
33 the implementations are correct and act the same on each architecture there
34 would not be any problems much.
38 Need to figure out some things, I figure the best thing to do would be to have
39 classes in individual files and translate them on the go. The kernel can be
40 kept minimal in binary size by just loading class stuff as needed. Drivers for
41 things would just be another set of class files. Although the grouping becomes
42 vague, what is the kernel and what is loaded from the disk? In essence
43 everything can be on the disk, and the kernel could be a level one hypervisor
44 setup by the bootloader which loads the initial classes. There will need to be
45 at least one hypervisor which manages the system threads and such, but where
46 does that start and where does it end? If I have the kernel just be a giant
47 glob of precompiled classes, I could end up having the entire classpath be in
48 the binary because of the way dependencies work. So I will need some kind of
49 vmstrap system. Either something in assembly, or C, that sets up the kernel
50 state and loads it. Could probably do it Java however. So I will need a bare
51 minimum setup. Then that bare minimum can load classes from the disk and
52 compile them as needed (say if one decided to delete the cache for the kernel
53 which would force it to recompile). Anything that exists as part of the boot
54 strap would have to be very minimal. So that would include the bootloader and
55 the class recompiler. This means that I will have to modify some of the class
56 loading stuff to remove some dependencies that it requires (such as
57 PrintWriter for my current debugging).