26 ms·
Java at 30: Interview with James Gosling
- mark_l_watson 1y agoRight on, James Gosling's work is amazing, and he and the whole Java ecosystem have my gratitude: I went to the first Java World Tour conference and wrote a little blog article about it that was linked on Sun's home Java page for about a year. I was very lucky, and since I was the first search hit for 'Java consultant' for a very long time that gave my wife and I the freedom to live in a rural area and I could get remote work for a decade. As long as I am expressing gratitude, I would also like to call out the Clojure team for developing a wonderful ecosystem in top of Java and the JVM. It must be wonderful to do work that positively affects the lives of millions of people.
- jgneff 1y agoI am also very grateful to James Gosling. I was working with C++ at Taligent (an Apple, IBM, and HP joint venture) in the fall of 1995 when I first downloaded Java to give it a try. I literally jumped up and down with joy after writing my first "Hello, World" program. It was such a breath of fresh air compared to the Taligent CommonPoint application framework we were building. I took the severance package when Taligent imploded, dropped everything I was doing at the time, and have been working with Java and its related software ever since.
- fidotron 1y agoI think it's incredible with hindsight how Java countered many of the mid 90s C++ problems, especially by avoiding multiple inheritance. It remains a shame that it didn't launch with generics though, and I still think operator overloading would have been good. Had it done so I think a lot more people would have stuck around for when the performance improved with HotSpot.
- astrange 1y ago> I think it's incredible with hindsight how Java countered many of the mid 90s C++ problems, especially by avoiding multiple inheritance. This is because Java is based on an older language called Objective-C that doesn't have multiple inheritance :) It's not based on C++, that's just the other OO language from the era people usually think of.
- fidotron 1y ago> This is because Java is based on an older language called Objective-C that doesn't have multiple inheritance :) No it's not, certainly not any more than it's "based" on Smalltalk.
- astrange 1y agohttps://cs.gmu.edu/~sean/stuff/java-objc.html https://cs.gmu.edu/~sean/stuff/java-objc.html
- dragandj 1y agoBoth James Gosling (Java) and Rich Hickey (Clojure) are amazing creators! Each brought a breath of fresh air to programming at their respective times.
- jbellis 1y agoOn my list of programmers I want to meet before it's too late, along with Brian Kernighan.
- cloudking 1y agoWhy is Java so popular in enterprise?
- lemonwaterlime 1y agoAmong other things, because the structure of the code corresponds to the structure of the organization itself. Things tend to form fractal systems of systems for efficiency. A cleanly delineated org chart maps to a cleanly delineated codebase.
- keeganpoppen 1y agoon one level this is clearly “shipping the org chart”, but… honestly, even as no fan of Java this is clearly efficient on many levels, especially when you consider the humans and org to be part of the system (which everyone should. or it’s just my HCI brain talking.).
- tylerflick 1y agoMy guess is the size of the talent pool to hire from.
- hackthemack 1y agoI worked in IT from the 90s to today. My perspective is it grew and grew because Sun supported it, then IBM supported it, RedHat supported it. It had the glimmer that it was the "Enterprise Way" of doing "Real IT" programming for "Real Businesses". I am not saying any of that is the "Truth", just the perception that was held by the majority of people who could choose what to write enterprise code in.
- toyg 1y ago> Sun supported it, then IBM supported it, RedHat supported it And Oracle (well before the Sun acquisition - in fact, control of Java was basically the main cause of that move). Any technology that could bag both IBM and Oracle is (or rather was) likely to dominate the enterprise space.
- 1y ago
- exabrial 1y agoJava performance isn't the fastest, that's ok, a close 3rd place behind C/CPP ain't bad. And you're still ahead of Go, and 10x or more ahead of Python and Ruby. Java syntax isn't perfect, but it is consistent, and predictable. And hey, if you're using an Idea or Eclipse (and not notepad, atom, etc), it's just pressing control-space all day and you're fine. Java memory management seems weird from a Unix Philosophy POV, till you understand whats happening. Again, not perfect, but a good tradeoff. What do you get for all of these tradeoffs? Speed, memory safety. But with that you still still have dynamic invocation capabilities (making things like interception possible) and hotswap/live redefinition (things that C/CPP cannot do). Perfect? No, but very practical for the real world use case.
- jbellis 1y agomore like 100x faster than Python/Ruby and that's before you throw in real multithreading
- timbit42 1y agoI have heard around 50x, which is about the same as between assembly and BASIC on 8-bit systems.
- igouy 1y agoWe could measure programs. https://news.ycombinator.com/item?id=44022366 https://news.ycombinator.com/item?id=44022366
- igouy 1y agoLet's not pluck numbers out of thin air. https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/comparable.html#geometric-mean https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
- jbellis 1y agoiirc these benchmarks have such short runtimes that they are not useful for assessing real-world java jit performance
- lkuty 1y agoI am wondering what was the role of Guy L. Steele in the creation of Java if he had any. From the article, it looks like it was Gosling alone. I did not cheat by checking on Wikipedia
- steelbird 1y agoHe worked on it after, no?
- neom 1y agoJames Gosling, Robert Pike and Geoffrey Hinton are my top 3 "Canadians who meaningfully changed things in technology" (tho, I should probably make it a top 5, add Brian Kernighan and figure out someone else)
- cmrdporcupine 1y agoKenneth Iverson (APL) could be your fifth even if none of us use APL, its reputation and influence is probably deeper than we realize
- badcryptobitch 1y agoIf Robert Pike is on your list, maybe Graydon Hoare should be 5th place!
- toprerules 1y agoI admire Java as a success story, but I still have a deeply ingrained aversion to it for many reasons. I will admit that many of the reasons are due to Java's legacy as the language of bloated corporations, and its creation of overly verbose, magic fueled frameworks and poorly written code. Java as a language goes hand in hand with the idea that code is coal to be shoveled into the furnace, and we should all throw our aspirations away and embrace mediocrity. My other issues with the JVM is how much of a black box it is from a platform perspective, which makes debugging a PITA with standard ops tools like strace, gdb, etc. The JVM's over allocation of memory robs the kernel of real insight as to how the workload is actually performing. When you use the JVM, you are completely locked in and god help you if there isn't a JVM expert to debug your thing and unravel how it translates to a platform implementation. Then of course there's the weird licensing, it's association with Oracle, managing JDK versions, it's lack of it factor in 2025, and a huge boatload of legacy holding it back (which is not unique to Java). I have successfully navigated my career with minimal exposure to Java, and nowadays there's a glut of highly performant languages with GC that support minimal runtimes, static compilation, and just look like regular binaries such that the problems solved by something like the Java or Python VMs just aren't as relevant anymore - they just add operational complexity. To reiterate, I admire JG just like any tech person should. Java's success is clear and apparent, but I'm glad I don't have to use it.
- the_overseer 1y agoIT factor! Am I on a fashion website now? What kind of argument is that? Also, why on earth would you use strace or gdb for Java? It has enormously performant debugging tools in the JDK. Also, IDE debugging integration is second to none.
- toprerules 1y agoBecause if I'm debugging a critical issues and wading through multiple layers of processes and system interactions, I don't want to have to learn a bespoke toolkit and debugging system for every single process.
- bitwize 1y ago
- aabajian 1y agoJust going to remind y'all of this: https://www.joelonsoftware.com/2005/12/29/the-perils-of-javaschools-2/ https://www.joelonsoftware.com/2005/12/29/the-perils-of-java... I went to a Java school. I remember my operating systems class involved writing simulated OS code in Java (for example, round robin for context switching). The argument was that it would be easier to understand the algorithms if the hardware complexities were minimized. I understand that sentiment, but I don't think Java was the right choice. Python would have accomplished the same task even better (understanding algorithms). I think there was a huge influence from industry to teach college students Java from day one. I had taught myself BASIC and some C back in high school, so it was a bit of a step backwards to learn a high-level language just to do simulated low-level OS programming.
- cbm-vic-20 1y agoA lot of the arguments Joel makes in that article also apply to Python, and pretty much any other higher-level language that doesn't make you think about pointers. Ironically, he points out the Google had a great leap over Microsoft with MapReduce, which was built in Java.
- jonhohle 1y agoBack in the early 2000s, I was taught in C, C++, Motorola 68HC11, and MIPs assembly. I can clearly understand how Java works, even if I don’t know its GC is implemented. I can understand how programs were written from the 80s to currently. Had I learned programming in Java or, worse, Python, I doubt I’d have the same understanding. It’s relatively easy to go from low level to high level languages if you’re willing to give up control. My experience is that the opposite is less true. It’s certainly possible, but not as straightforward as understanding some foundational ideas.
- telotortium 1y agoThe original version of MapReduce was written in C++. The successor library, Flume, was however written in Java, but Spolsky would certainly have been referring to the original MapReduce, since the Flume paper wasn't published until 2010.
- PathOfEclipse 1y agoI've been working in .NET/C# for the past few years, and while I'm happy with it, I still think the JVM/Java are the best ecosystem overall I've worked in. It's amazing how many things the Java ecosystem gets right that .NET gets wrong. For instance, Java introduced the fork/join pool for work stealing and recommended it for short-lived tasks that decomposed into smaller tasks. .NET decided to simply add work-stealing to their global thread pool. The result: sync-over-async code, which is the only way to fold an asynchronous library into a synchronous codebase, frequently results in whole-application deadlocks on .NET, and this issue is well-documented: https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html https://blog.stephencleary.com/2012/07/dont-block-on-async-c... Notice the solution in this blog is "convert all your sync code to async", which can be infeasible for a large existing codebase. There are so many other cases like this that I run into. While there have been many mistakes in the Java ecosystem they've mostly been in the library/framework level so it's easier to move on when people finally realize the dead end. However, when you mess up in the standard library, the runtime, or language, it's very hard to fix, and Java seems to have gotten it more right here than anywhere else.
- neonsunset 1y ago[flagged]
- PathOfEclipse 1y agoThat's a very harsh reply with zero evidence behind it. Based on your response, I am willing to bet I understand the platform better than you do. And the deadlocks I'm referring to are happening in apps written by other people who've been in the .NET ecosystem exclusively for more than a decade, or even two decades. Here's an article from 5 years ago: https://medium.com/criteo-engineering/net-threadpool-starvation-and-how-queuing-makes-it-worse-512c8d570527 https://medium.com/criteo-engineering/net-threadpool-starvat... But does citing a more-recent article matter to you? Probably not. A source being 13 years old only matters if something relevant has changed since then, and you certainly couldn't be bothered to point out any relevant change to support your otherwise fallacious and misleading comment. What actually amazes me most about this is that people in .NET seem to want to blame the person writing sync-over-async code like they are doing something wrong, even going so far as to call it an "anti-pattern", when in reality it is the fault of poor decision-making from the .NET team to fold work-stealing into the global thread queue. The red-blue function coloring problem is real, and you can't make it go away by pretending everyone can just rewrite all their existing synchronous code and no other solution is needed. If all you know is one ecosystem, then it seems you are susceptible to a form of Stockholm syndrome when that ecosystem abuses you.
- geodel 1y ago> Growing up with “pretty close to zero money,” Zero money programmers >> Zero interest rate programmers :-)
- snovymgodym 1y agoJava, especially modern Java, is a fine language. The JVM is an awesome runtime. I'm tired of pretending it isn't.
- tstrimple 1y agoThe vast majority of Java developers will never touch modern Java and have zero idea of its features or capabilities. I'm in the process of migrating literally thousands of servers and tens of thousands of apps to the cloud and there isn't anything close to modern Java. The absolute majority at this client seems to be Java 8 and there isn't a single Java 17 or newer. So it's one thing to have great modern features. But if you're going to be a Java developer it'll take work / luck to actually be able to use decent versions of it. Very similar story with C++. If you're on a great cutting edge team, you might be able to use the shiny new stuff. But more than likely you'll be relegated to some C++11 at the latest. I haven't seen things quite so bad on the .NET side at this client. Yes there's a ton of legacy ASP.NET apps. But there are also a lot of .NET Core apps. They haven't quite made it to the post Core versions of .NET, but it's still a healthier state than I see with Java. I guess all of this to say that modern versions of "ancient" programming languages are great and really do improve things. But chances are if you're working with an ancient programming language you'll be stuck maintaining legacy shit and won't ever get to utilize the shiny stuff. This is keeping in mind that your average programmer will never even try to interview for FAANG never mind grind leetcode and programming language trivia for weeks like seems so common here.
- deleted 1y ago[deleted]
- FromTheSteppe 1y agoWell to be fair, if you wanted Performance, Linux support, and a framework which was built with dependency injection and async support in mind and not just have them as patched in footguns, you had to migrate to .NET Core. A Java 8 Spring app was just good enough.
- 1y ago
- kaliszad 1y agoThe java.net.Inet4Address and Inet6Address could be more lightweight. For a simple IPv4 address normally representable using 4 bytes/ 32 bits Java uses 56 bytes. The reason for it is Inet4Address object takes 24 B and the InetAddressHolder object takes another 32 B. The InetAddressHolder can contain not only the address but also the address family and original hostname that was possibly resolved to the address. For an IPv6 address normally representable using 16 bytes/ 128 bits Java uses 120 bytes. An Inet6Address contains the InetAddressHolder inherited from InetAddress and adds an Inet6AddressHolder that has additional information such as the scope of the address and a byte array containing the actual address. This is an interesting approach especially when compared to the implementation of UUID, which uses two longs for storing the 128 bits of data. Java's approach is causing 15x overhead for IPv4 and 7.5x overhead for IPv6 which seems excessive. What am I missing here? Can or should this be streamlined?
- dmurray 1y agoWhat a wonderfully HN response to a biographical piece on James Gosling. For my part, most of the Java code that I have written that needs to use IP addresses needs somewhere between 1 and 10 of them, so I'd never notice this overhead. If you want to write, like, a BGP server in Java I guess you should write your own class for handling IP addresses.
- LtWorf 1y agoJava is fast as long as you have near infinite RAM. When you don't it starts breaking apart. The whole fixation of java developers to abstract things leads to countless virtual calls that are actually very slow at runtime.
- klim2media 1y agoMy biggest gripe with Java is the only really viable IDE option is from a for-profit company and that it routinely gobbles up my RAM. I used Eclipse and Netbeans back in the day but IntelliJ is superior before it becomes unusable.
- whartung 1y agoOde to Java. Boy, I love Java. When I switched jobs way back, a condition was that the new project was going be using Java. GC. Single file modules. No "forward". The Collection suite. Fast compiles. The magic of the ClassLoader. The ClassLoader, that was insightful. I don't know how much thought went into that when they came up with it, but, wow. That ClassLoader is behind a large swath of Java magic. It really hasn't changed much over time, but boy is it powerful. When I started Java, I started it because of the nascent Java web stack of the day. Early servlets and JSP. I picked because of two things. One, JSPs were just Servlets. A JSP was compiled down into a Servlet, and shazam, Servlet all the way down. Two, single language stack. Java in JSPs, Java in Servlets. Java in library code. Java everywhere. In contrast to the MS ASP (pre .NET) world. Mono-language meant my page building controller folks could talk to my backend folks and share expertise. Big win. Servlets were a great model. Filters were easy and powerful. Free sessions. Free database connection pools in the server. I mean, we had that in '98, '99. And, of course, portability. First project was using Netscapes server, which was spitting up bits 2 weeks before we went live, so we switched to JRun in a day or two (yay standard-ish things...). Then, Management(tm) decided "No, Sun/Oracle, we're going NT/SQL Server". Oh no. But, yup, transitioned to that in a week. Month later, CTO was fired, and we went back to Sun/Oracle. Java EE had a rough start, but it offered a single thing nobody else was offering. Not out of the box. Not "cheap", and that was a transaction manager, and declarative transactions on top of that. We're talking about legit "Enterprise grade" transaction manager. Before you had Tuxedo, or MS MTS. Not cheap, not "out of the box", not integrated. JBoss came out and gave all that tech away. Then Sun jumped on with early, free, Sun Java Enterprise 8 which begat Glassfish which was open source. Glassfish was amazing. Did I mention that the included message queues are part and parcel of the integrated, distributed transaction model for Java EE? Doesn't everyone get to rollback their message queue transactions when their DB commit fails? Message Driven Beans, sigh, warms my heart. There were certainly some bad decisions in early Java EE. The component model was far too flexible for 95% of the applications and got in the way of the Happy Path. Early persistence (BMP, CMP) was just Not Good. We punted on those almost right away and just stuck with Session Beans for transaction management and JDBC. We were content with that. The whole "everything is remote" over CORBA IIOP and such. But none of that really lasted. EJB 3 knocked it out of the park with local beans, annotations in lieu of XML, etc. Introduction of the JPA. Modern Jakarta EE is amazing, lightweight, stupid powerful (and I'm not even talking Spring, that whole Other Enterprise Stack). There's lots of baggage in there, you just don't have to use it. JAX-RS alone will take you VERY far. Just be gentle, Java Enterprise offers lots and lots of rope. None of this speaks to the advances in the JVM. The early HotSpot JIT was amazing. "Don't mind me, I'm just going to seamlessly sneak in some binary compiled code where that stack machine stuff was a nano-second ago. I've been watching it, this is better. Off you go!" Like presents from Santa. The current rocket ship that in JDK development (this is good and bad, I still do not like the Java 9 JPMS module stuff, I think it's too intrusive for the vast majority of applications). But OpenJDK, the Graal stuff. Sheesh, just get all light headed thinking about it. Along with the JVM we have the JDK, its trivial install. Pretty sure I have, like, 20 of them installed on my machine. Swapped out with a PATH and JAVA_HOME change. The JVM is our VM, the Servlet container is our container. Maven is our dependency manager. Our WAR files are self-contained. And all that doesn't go stomping on our computer files like Paul Bunyan and Blue making lakes in Minnesota. It's no wonder I was struggling to grok all the talk about VMs, Dockers, and containers and all that stuff folks mess with to install software. We never had to deal with that. It just was not an issue. I can distribute source code, with a pom.xml, and a mvnw wrapper script, and anyone can build that project with pretty much zero drama. Without breaking everything on their system. And whatever IDE they're using can trivially import that project. It's also fast. My current little project, > 10K lines of code, < 3s to clean/build/package. Obviously, there's always issues. The Stories folks hear are all true. The legacy stuff, the FactoryInterfaceFactoryImpl stuff. The Old Days. It's all real. It's imperfect. But, boy, is it impressive. (And, hey, portable GUI folks, Java FX is pretty darn good...)
- theanonymousone 1y agoI have heard it about the situation in 1995, but it probably also holds to a good extent now: You appreciate Java (only) after you have experienced/experience other languages.
- kazinator 1y agoMr. Gosling; please hunt down and release the source code for Ace: a syntax-driven C preprocessor. You can keep the Java, thanks.
- w10-1 1y agoJava is a great success story. Though, to be fair, James Gosling was the spark but has not been the steward. Even as early as Java 1.1 and 1.2 he was not particularly involved in making runtime, library, or even language decisions, and later he wasn't the key to generics, etc. Mark Reinhold has been the hand's-on lead since 1.1, first integrating early JIT's, HotSpot, the 1.2 10X class explosion, and has been running the team all the way through Oracle's purchase, making the JVM suitable for dynamic language like Kotlin and Clojure, open-sourcing, moving to a faster release cadence, pushing JVM method and field handles that form the basis for modern language features, migrating between GC's, and on and on. As far as I can tell, everything that makes Java great has come down to Mark Reinhold pushing and guiding.
- elric 1y agoThe whole core team is amazing. Gosling wanted a language that was practical from a development POV. Over the years, it's been refined into a language with a fair amount of mechanical sympathy on top of the development experience. Thanks to folks like Mark Reinhold and Brian Goetz. I have no love for Oracle the big bad company. But I am deeply greatful they've managed to keep that group moving forward.
- selfhoster 1y ago> Java is a great success story. Though, to be fair, James Gosling was the spark but has not been the steward. That's like saying Linus was only the spark for git because he spent two weeks hacking it from scratch. The whole world uses git now.
- billmcneale 1y ago> dynamic language like Kotlin and Clojure, Kotlin is not a dynamic language, it's statically typed, just like Java.
- rootbear 1y agoWhen Gosling was at Sun, he was one of two principal architects of the NeWS Window system. The X Window system was designed for "dumb" display devices and so the display elements were all static, not requiring much work from the server. NeWS was designed to run on a (Sun) workstation, where there was a lot of computational power available, so it was based on Postscript. A NeWS client would send a program to the server, not just static commands. Gosling, unsurprisingly, designed Java with the NeWS model in mind, where web pages were programs, not just static HTML documents. When I got him to sign my copy of "The Java Programming Language", I asked him if Java was the revenge of NeWS. He just smiled.
- AStonesThrow 1y agoThe corollary of this was Display PostScript. At my first job we had a SPARCStation 2 with a SPARCprinter. The SPARCStation was a mighty wonder to behold, with a storage pedestal and a lovely OpenWindows GUI on a luxurious Sun monitor and color framebuffer. The operator sitting at the desk was often just a novice clerical worker, but we ran a few Internet services on the machine as well. However, our department depended on that SPARCprinter to spit out hundreds of sheets of paper daily. We could not depend on the printer to stay functional, though. Have you heard of a Winmodem? SPARCprinters were essentially that: they were configured as a "dumb display device" where all the imaging logic was contained in the software and run on the server. A page was written in PostScript, rendered on the print server, and dispatched to the printer as if it were a framebuffer/monitor. Unfortunately, for whatever reason, the server software was not so reliable, or the printer hardware wasn't reliable, and because of this peculiar symbiotic parasitism, whenever our printer wedged, our server was also toast. Every process went into "D" for device wait; load averages spiked and all our work ground to a halt. We would need to pull the worker off the desktop, reboot the whole server, and start over with the printer. That printer haunted my dreams, all though my transition from clerk, to network operator, to sysadmin, and it wasn't until 2011 when I was able to reconcile with printers in general. I still miss SunOS 4 and the whole SPARC ecosystem, but good riddance to Display PostScript.
- bitwize 1y agoJust as we have a modern successor to X in Wayland, we also have a modern successor to NeWS: the browser with JavaScript, with PWAs and Electron providing a smoother desktop integration. I wonder what Gosling thinks of the fact that NeWS ultimately won in the end, even on Microsoft systems.
- nelup20 1y agoI personally appreciate Java (and the JVM) much more after having tried other languages/ecosystems that people kept saying were so much better than Java. Instead, I just felt like it was a "the grass is greener" every time. The only other language that I felt was an actual massive improvement is Rust (which so far has been a joy to work with). It's a shame imo that it's not seen as a "cool" option for startups, because at this point, the productivity gap compared to other languages is small, if nonexistent.
- sapiogram 1y agoMy feelings exactly. Go was particularly disappointing, it promised everything but only felt like a sidegrade from Java. Screw it, a downgrade, until go errors get stack traces.
- overfeed 1y agoThe reason I prefer the Go ecosystem to Java is cultural, rather than technical. Sure, the JVM is very impressive and the language has been evolving, but the culture around Java seems to encourage needless complexity. Of all the languages I've had to work with trying to get to know unfamiliar code-bases, it's the Go codebases I've been quickest to grok, and yielded the fewest surprises since as the code I'm looking for is almost always where I expect it to be.
- skydhash 1y agoI think kotlin is what Java should have been like. The same capabilities but with less cumbersome constraints.
- ori_b 1y agoWhen I used Kotlin, it felt like Java, but with the antipatterns baked in as language features.
- complexworld 1y ago
- kubb 1y agoWorth remembering how much marketing effort and money there was in pushing Java in the 90s: https://m.youtube.com/watch?v=NVuTBL09Dn4 https://m.youtube.com/watch?v=NVuTBL09Dn4
- jcadam 1y agoBeen coding on the JVM for a good chunk of my career. Though the last several years has been in languages other than Java - Scala, Clojure (my personal favorite), and Kotlin. Finally managed to get a job offer (after being unemployed for a bit) doing Python. It's starting to look like demand for JVM experience is beginning to wane. Might be time to move on anyway :shrug: I'm old... as long as there's a steady paycheck involved, I'll code in whatever language you say. Though, currently working on a little personal project in Scala. :)
- throwaway7783 1y agoJava stagnated for a while, but has now picked up steam. With things like GraalVM, the stellar ecosystem, generally very good performance and changes to the language, it is more and more pleasant to use. It may not be cool to use Java for startups, but we do and are immensely productive with it.
- zombiwoof 1y agoLegend
- deleted 1y ago[deleted]
- rr808 1y agoJava is completely revitalized now and is my favorite platform. The main problem is the legacy code and attitude out there, dependency injection, using Spring or Spring Boot etc SUCKS. VertX is/was good but now with virtual threads you dont need all the async complexity.
- SoftTalker 1y agoGosling also developed a version of Emacs back in the early 1980s. https://en.wikipedia.org/wiki/Gosling_Emacs https://en.wikipedia.org/wiki/Gosling_Emacs "Gosling Emacs was especially noteworthy because of the effective redisplay code, which used a dynamic programming technique to solve the classical string-to-string correction problem. The algorithm was quite sophisticated; that section of the source was headed by a skull-and-crossbones in ASCII art, warning any would-be improver that even if they thought they understood how the display code worked, they probably did not."
- lysace 1y agoThe JVM was the first VM I got to know, at uni in like 1996 or so. Had fun building stuff using the Jasmin "assembler". Seems like it's on Github now: https://github.com/davidar/jasmin https://github.com/davidar/jasmin > Jasmin was written because, at the time that we wrote the Java Virtual Machine book for O'Reilly, Sun had not published an assembler format for the Java virtual machine. > Generating a binary Java .class file is pretty fiddly. Its like creating an a.out (or .exe) file by hand. Even using a Java package like JAS (a Java API for creating class files, used internally by Jasmin and written by KB Sriram), you need to know a lot about the philosophy of the Java Virtual Machine before you can write something at the Virtual Machine level and generate a Java class. > We wanted something that made it very easy for a student or programmer to explore the Java Virtual Machine, or write a new language which targets the VM, without getting into the details of constant pool indices, attribute tables, and so on.
- voidhorse 1y agoThe java ecosystem is great, and the JVM does deserve the appellation of technical marvel, Java the language on the other hand...questionable. Many of Java's novel language choices have proven unfavorable in the long run (e.g. everything is a class, and even its syntax was needlessly verbose and ceremonious from day one) and all of what makes it a halfway decent language these days are good ideas that originated in other languages, often eons ago, which Java, for some reason, often elects to rebrand with its own terminology. That said, the maintainers also do a phenomenal job managing the evolution of the language and preserving compatibility, but from a pure programming language design standpoint it's largely a messy amalgam of great ideas from a bunch of other places awkwardly realized. Great, robust ecosystem, great platform, great management, mediocre language design.
- dreamcompiler 1y agoJava frustrates the absolute shit out of me. An objectively terrible language coupled with insanely great garbage collectors, insanely great JIT compilers, and insanely great IDEs. Why couldn't we have had these things for Lisp?* I mean, if 1/1000 of the intellectual horsepower that's been thrown at Java had been thrown at Lisp, we'd all be driving to work in orbit-capable flying cars that used a teaspoon of fuel per year. * Of course Lisp invented the insanely great IDE around 1984 but then everybody forgot about it and had to rediscover the idea 30 years later.
- asa400 1y agoClojure is around and still going strong! I mean the IDE experience is probably not what you're describing, but you can use the JVM with a mature, productive Lisp language.
- dreamcompiler 1y agoFair point. To me, Clojure is an "almost-lisp" because of its lack of cons cells, its use of all the brackets on the keyboard, and its dependence on the JVM which can't do tail jumps. I love Common Lisp because it compiles down to the metal and you can write code with it that starts instantly and runs very fast. But all the above is more about personal taste than anything else, so maybe I should try Clojure again.
- asa400 1y agoYeah, I guess it depends on what you want. Clojure is not to everyone's taste, I can respect that. It's a decent option if you have to target the JVM.
- pjmlp 1y ago> Gosling primarily uses the NetBeans IDE for development, praising its open source, Apache-licensed nature and dedicated community. He expresses frustration with developers who cling to outdated tools: “The thing that drives me nuts the most are people who are madly grasping the ’80s or the ’70s — people who still want to use Vi, which was high-tech in the ’70s.” From one of the key developers in the Emacs history, and genesis. He moved on, others keep trying to live in the past.
- lycopodiopsida 1y agoModern stacks (as in go and rust) are largely editor agnostic - it is Gosling who lives in the past, thinking that an IDE is still required(and a very weak one, in case of abandoned Netbeans). One of the reasons, btw, why I would take Go over Java in a heartbeat.
- pjmlp 1y agoThere is hardly anything modern about Go, a rebranded Limbo with with anti-intelectuals mentality. As for Rust, there is a reason the large majority is either on VSCode or RustRover.
- lycopodiopsida 1y agoI don’t care about opinions on Go the language, but the tooling around is excellent without being bound to an IDE. And no matter what you use: Goland, VSCode or dape in Emacs, your debugger will plug in the same delve. > the large majority is on VSCode Here, fixed it for ya. But since when is VSCode an IDE? It is just an extensible editor, not very far from Emacs or neovim. We’ll see how it plays out, but I assume that IDE is a dead concept. No one develops new IDEs anymore, besides the usual money-milking with “Idea + plugin=>new ${name}ide” from Jetbrains.
- pjmlp 1y agoYou mean tooling as it was already kind of available on Turbo Pascal for MS-DOS? When people discuss Go tooling feels like Renaissance folks resdicovering Roman city enginnering. VSCode is certainly an Integrated Development Editor, and it is such a dead concept that one of the key Visual Age and Eclipse linage of IDEs is the one behind it, Erich Gamma. Biggest difference is that one hardly needs to code extensions, or manually configure them most of the time, a simple install button press is only that is needed to get any extension going, many of which graphical, taking all advantage of the Web platform.
- nunobrito 1y agoOh, this marks 16 years that I'm writing Java in that case. My only complaint is the flop with JavaFX. It should have remained as part of the JDK to replace Swing and continued development there. Without that, Java is thrown as the forever backend platform. Anyways: good interview.
- spintin 1y ago[dead]
- ta12653421 1y agoi can just say: being now older (40+ ;-), i would suggest to just use the tool that gets the job done. in todays world, this is Java or C# - while im highly advocating for the latter, because the eco system feels much more tightly integrated: i can spin up whatever application for every usecase with C# in 1 minute; also the language still evolves massivly, there is enough HR-power on the market, also .NET is now crossplatform. the language is just elegant and very efficient, it makes the job much easier