We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

J.A.V.A.

From Esolang
Jump to navigation Jump to search
This article is not detailed enough and needs to be expanded. Please help us by adding some more information.
This is still a work in progress. It may be changed in the future.

J.A.V.A. or Just Another Verbose Annoyance is a WIP joke language by Tailcalled. It is an object disoriented language.

Classes

Everything in J.A.V.A. is about classes. If you want to create a class, you have to get a class factory, which you can get from a class factory provider. The only implementation of that is ClassFactoryProviderSingleton, which contains a static singleton instance. This is how you create a simple class in J.A.V.A:

   ClassFactory factory = ClassFactoryProviderSingleton.getSingleton().getFactory(ClassFactoryProvider.CLASS);
   factory.setName("Hello, World!");
   MethodFactory methods = factory.createMethodFactory();;
   Method main = methods.createMethod("main");;;
   StatementBuilder statements = main.createStatementBuilder();;;;
   Statement statement0 = statements.createStatement(0);;;;;
   ExpressionBuilder expressions = statement0.getExpressionBuilder();;;;;;
   Expression helloWorldString = expressions.stringLiteral("Hello, World!").build();;;;;;;
   Expression printHelloWorld = expressions.clear().call("println").on(helloWorldString).build();;;;;;;;
   statement0.set(printHelloWorld).ignoreResult().save();;;;;;;;;
   Statement statement1 = statements.createStatement(1);;;;;;;;;;
   expressions = statement1.getExpressionBuilder();;;;;;;;;;;
   Expression return = expressions.return().from().method().with(expressions.nullLiteral.build());;;;;;;;;;;;
   statement1.set(return).ignoreResult().save();;;;;;;;;;;;;
   statements.updateStatement(0).set(statement0).save();;;;;;;;;;;;;;
   statements.updateStatement(1).set(statement1).save();;;;;;;;;;;;;;;
   main.updateStatements.set(statements).save();;;;;;;;;;;;;;;;
   factory.addMethod(main);;;;;;;;;;;;;;;;;
   factory.build().main();;;;;;;;;;;;;;;;;;

This program prints 'Hello world'. Some might say it's over-engineering, but we say that it's very maintainable, unlike the haskell equivalent:

   main = print "Hello world"

Semicolons

The number of semicolons after statement n must be n.