Comment by augusto-moura

2 years ago

Which would be?

Ok, here are two examples on the top of my head, of fairly trivial programs that are a pain to do right in Java.

1) A program that copies all data from standard input to the standard output. Try to write this without Googling. Simple enough, eh?

2) A program that serves as a middleware between servers and clients, both of which are behind NATs so they connect to your middleware, using gRPC methods. Servers use gRPC streams to maintain a connection, send their ID as the first message, receive request messages, and send reply messages. Clients send ID and request in a message, and receive reply message.

I hope you're willing to show me how wrong I am by writing the code :)

  • 1 is really trivial and took me like 5 seconds to write:

        public class Test {
            public static void main(String[] args) {
                System.in.transferTo(System.out);
            }
        }
    

    2 is anything but trivial in any language, unless it is some kind of a language specifically designed to build gRPC programs.

    Never versions of Java are quite pleasant to work with. There are a lots of quality-of-life improvements (switch expression, multi-line string literals, string templates (currently in preview), lots of useful stdlib APIs), as well as quite fundamental additions like Loom.

    edit: formatting, explanations

    • > System.in.transferTo(System.out);

      Ok, that's really convenient :) I suppose it would be much harder to do it without the transferTo function, but that would be beyond the point. I'll instead focus on the example 2.

      > 2 is anything but trivial in any language, unless it is some kind of a language specifically designed to build gRPC programs.

      The gRPC protocol here is only an example. Feel free to use any protocol you like. As a counter-example, here's a TCP version in <200 lines of Go: https://gist.github.com/paskozdilar/6871fef7b0b245a0846bd27e...

      > Never versions of Java are quite pleasant to work with

      I know this is a typo, but you accidentally wrote something completely true :')

      5 replies →