По мере того как Oak, или, точнее, Java, претерпевал многочисленные изменения, некоторые принципы оставались незыблемыми. Это должен был быть полностью современный язык программирования, воплощающий все основные достижения в теории программирования последней четверти века. Он должен был быть объектно-ориентированным, заставляя программистов писать небольшие и самодостаточные модули, которые можно соединять друг с другом, как блоки Lego. Он должен был быть надежным, то есть устойчивым к сбоям, обходясь без многих стандартных инструментов программирования, которые дают разработчикам гибкость, но могут приводить к непредсказуемым результатам.