Oak (programming language)

Oak is a discontinued programming language created by James Gosling in 1991, initially for Sun Microsystems' set-top box project. The language later evolved to become Java.

The name Oak was used by Gosling after an oak tree that stood outside his office.

History

Duke, Oak's smart agent that would later become the Java mascot

In 1995, Sun Microsystems was attempting to develop a new technology for programming next generation smart appliances, which Sun expected to be a major new opportunity.

The team originally considered using C++, but rejected the idea for several reasons (see Java history).

Initially, Gosling attempted to modify and extend C++ but soon abandoned that in favor of creating a new platform called Green and an entirely new language, which he called Oak, after the tree that stood just outside his office.[1]

By the summer of 1992, they were able to demonstrate portions of the new platform including the Green OS, the Oak language, the libraries, and the hardware. Their first attempt, demonstrated on September 3, 1992, focused on building a PDA device named Star7 which had a graphical interface and a smart agent called "Duke" to assist the user.

Oak was renamed Java in 1994 after a trademark search revealed that Oak was used by Oak Technology.[2] Java 1.0 was finally shipped in 1996.[3]

Differences with Java

Oak was the basis for what Java 1.0 became later, but there were also some differences:[4][5] Several concepts were planned in the Oak specification but remained not implemented in the original language because of time constraints:

|title = A Simple Assertion Facility For the Java Programming Language | publisher=Sun Microsystems |accessdate = 2009-08-02}}</ref>

Other concepts were different from, or improved later, for Java:[4]

  • abstract methods were defined as in C++.
  • While the Oak default access level was the same as Java's (default) package private access level, it was called "private". Oak did not have an equivalent to Java's private access modifier.

And finally some concepts were later scraped out:

  • All exceptions were unchecked.
  • It was possible by the unprotect keyword to write code that would not signal asynchronous exceptions.
  • There was some support for Design by Contract:[7] Oak had assertions whereby Class variable could be constrained and the constraints were enforced at entry and exit of every public and protected method of the class. Methods could also have their own pre-conditions and post-conditions, which were inherited but not redefinable in a subclass.[4][8]
gollark: ```console=tty0 console=ttyS0,921600n1 vmalloc=400M slub_debug=OFZPU page_owner=on swiotlb=noforce androidboot.hardware=mt6765 maxcpus=8 loop.max_part=7 firmware_class.path=/vendor/firmware has_battery_removed=0 androidboot.boot_devices=bootdevice,11230000.mmc root=/dev/ram androidboot.verifiedbootstate=orange bootopt=64S3,32N2,64N2 androidboot.selinux=permissive buildvariant=eng androidboot.meta_log_disable=0 lpddr_used_index=2 prize_ddr_hardinfo= hall_up_cali_data=-16-16-16 hall_down_cali_data=-16-16-16 printk.disable_uart=1 bootprof.pl_t=4627 bootprof.lk_t=6878 bootprof.logo_t=619 androidboot.serialno=3082SH1001014876 androidboot.bootreason=kernel_panic gpt=1 usb2jtag_mode=0 mrdump_ddrsv=yes mrdump_cb=0x10e800,0x1400 androidboot.dtb_idx=0 androidboot.dtbo_idx=0```The kernel command line is quite something.
gollark: Based on the unhelpfulness of the internet I *may* actually have managed to create an entirely new class of horrible Android issue.
gollark: I also seem to not have blkid or lsblk.
gollark: Oh, correction, every *five* seconds.
gollark: ```03-01 21:54:43.706 492 492 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 492 (recovery), pid 492 (recovery)03-01 21:54:43.707 494 494 F libc : failed to exec crash_dump helper: No such file or directory03-01 21:54:43.708 492 492 F libc : crash_dump helper failed to exec03-01 21:54:48.709 496 496 W libc : Unable to set property "ro.twrp.boot" to "1": error code: 0xb03-01 21:54:48.710 496 496 W libc : Unable to set property "ro.twrp.version" to "3.4.0-TEST_MRMAZAK_10": error code: 0xb03-01 21:54:48.711 496 496 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 496 (recovery), pid 496 (recovery)03-01 21:54:48.714 498 498 F libc : failed to exec crash_dump helper: No such file or directory03-01 21:54:48.715 496 496 F libc : crash_dump helper failed to exec03-01 21:54:53.721 499 499 W libc : Unable to set property "ro.twrp.boot" to "1": error code: 0xb03-01 21:54:53.721 499 499 W libc : Unable to set property "ro.twrp.version" to "3.4.0-TEST_MRMAZAK_10": error code: 0xb03-01 21:54:53.722 499 499 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 499 (recovery), pid 499 (recovery)03-01 21:54:53.724 501 501 F libc : failed to exec crash_dump helper: No such file or directory03-01 21:54:53.725 499 499 F libc : crash_dump helper failed to exec```It seems to log this every few times a second, how amazing!

See also

References

  1. Jon Byous (March 12, 2003). "Java Technology: An early history" (PDF). Sun Microsystems. Retrieved August 2, 2009. Gosling called the new language "Oak", after the tree outside his window
  2. Murphy, Kieron (4 October 1996). "So why did they decide to call it Java?". JavaWorld. Retrieved 2020-07-15. 'The lawyers had told us that we couldn't use the name "OAK" because [it was already trademarked by] Oak Technologies,' said Frank Yellin, a senior engineer at Sun. 'So a brainstorming session was held to come up with ideas for a new name.'
  3. Jonathan I. Schwartz (August 30, 2007). "Different Isn't Always Better, But Better's Always". Archived from the original on September 5, 2009.
  4. Heinz Kabutz (July 15, 2003). "Once Upon an Oak ..." artima.com. Retrieved August 2, 2009.
  5. "Oak language specification". FirstPerson, Inc. Archived from the original on March 7, 2012. Retrieved March 6, 2015.
  6. "Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)". Retrieved August 2, 2009.
  7. Johannes Rieken (April 24, 2007). "Design by Contract for Java - Revised" (PDF). Retrieved October 2, 2010.
  8. "Support For 'Design by Contract', beyond "a simple assertion facility"". Sun Microsystems. Retrieved October 2, 2010.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.