Java port continued

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Netcracker
    Rookie
    • May 2014
    • 9

    Java port continued

    I'm wondering if there's an active Java port development of Angband out there.

    I read this post and did not want to dig it out again because it is from 2008.

    I searched the web and found the following two projects which seem to be dead. Maybe someone knows about active or planned Java ports of Angband?

    1. Jangband. Last update: one year ago. http://sourceforge.net/projects/jangband/
    2. Javamangband. Last update: more than two years ago. http://sourceforge.net/projects/javamangband/
    This seems a quiet, peaceful place.
  • Derakon
    Prophet
    • Dec 2009
    • 9022

    #2
    Not so far as I'm aware. Rewrites of Angband in other languages are very difficult and time-consuming projects, and I should know.

    (Pyrel isn't dead, I'm just on indefinite hiatus...)

    Comment

    • Netcracker
      Rookie
      • May 2014
      • 9

      #3
      I was speaking of Java ports, not Python ports because I'm a Java developer. I'm tempted to start a Java(FX) port but the point is I do know what it would mean - endless sleepless nights, debugging, frustration, refactorings, hiatus as you wrote. I started a similar project in the past and although the community was really large there was no one who helped me coding so I ended up doing it all alone. As always it took much more time and so I stopped working on it. My days aren't 48 hrs and some now and then my wife would like to see me too and the kids want to play with daddy.

      I read your post about an object model. Very interesting! I agree that it would definitely make sense to spend a lot of time on a model and basic concepts of handling events. Reading the discussion it came to my mind that the game is all about events or messaging, Things that want to get informed about events. Kind of a message service where objects can register to topics they are interested in and receive a message if something's happening. A similar approach would be to use the Observer design pattern to handle state changes.

      I haven't had a look at the code of Angband yet. Sure this would be a good starting point to find out leaving the Java port to someone else would be a good idea.
      This seems a quiet, peaceful place.

      Comment

      • Derakon
        Prophet
        • Dec 2009
        • 9022

        #4
        One of the first things I wrote for Pyrel after I got the basic object model working was a publish/subscribe module. This is trivial in Python, where you can just say "Hey, I want to subscribe to the event named "foo", call this function when it happens". It's a pain in the ass in Java, where you can't just pass functions around so easily. Generally for Java instead you have classes implement listener interfaces and then have a central class for each corresponding interface that performs calls when the event occurs. Or, preferably, you grab something like the Guava library's EventBus and use it instead. Still not quite as simple as the Pythonic approach but a hell of a lot better than vanilla Java.

        Comment

        • AnonymousHero
          Veteran
          • Jun 2007
          • 1393

          #5
          Originally posted by Derakon
          One of the first things I wrote for Pyrel after I got the basic object model working was a publish/subscribe module. This is trivial in Python, where you can just say "Hey, I want to subscribe to the event named "foo", call this function when it happens". It's a pain in the ass in Java, where you can't just pass functions around so easily. Generally for Java instead you have classes implement listener interfaces and then have a central class for each corresponding interface that performs calls when the event occurs. Or, preferably, you grab something like the Guava library's EventBus and use it instead. Still not quite as simple as the Pythonic approach but a hell of a lot better than vanilla Java.
          I get the sense that you're a Java developer "by day"... or at least have been . Things like Observable just got a lot less terrible with Lambda syntax (and SAM) in Java 8, but frankly I switched over to Scala about 10 (or so) months ago and have never looked back. (I look enviously toward Haskell, but I'm not sure the rest of the world is ready for it yet... I've been programming in it for years and years, but only personal projects so far.)

          Scala is just a lot more concise, less ceremonious and has proper support for (G)ADTs. IME algebraic data types are a huge boon to productivity and safety.

          Comment

          • Netcracker
            Rookie
            • May 2014
            • 9

            #6
            I didn't say that Java is the best programming language of the world. Every language has strengths and weaknesses. In fact there's no programming language which satisfies all the needs you have. Mind the horrible date and time API which has finally been improved in Java 8.

            But I don't want to discuss about programming languages. I would like to know about Angband Java ports.
            This seems a quiet, peaceful place.

            Comment

            • AnonymousHero
              Veteran
              • Jun 2007
              • 1393

              #7
              Originally posted by Netcracker
              I didn't say that Java is the best programming language of the world. Every language has strengths and weaknesses. In fact there's no programming language which satisfies all the needs you have. Mind the horrible date and time API which has finally been improved in Java 8.

              But I don't want to discuss about programming languages. I would like to know about Angband Java ports.
              In case it wasn't clear, I wasn't actually replying to you, nor particularly harshing on Java -- more extolling the virtues of Scala -- but...

              There are no $OTHER_LANGUAGE ports at this time. There are many reasons for this, but the overriding ones from my experience are: 1) No (non-developer) players care what language it's written in, as long as C/Vanilla works well enough, 2) why would anyone switch if it's more hassle to get it running? (Angband is already packaged for multiple Linux distributons and has Windows builds.), 3) The temptation to change "just this little thing" overpowers most would-be C-to-$LANG conversion projects until it's no longer "vanilla", 4) ... need I go on?

              EDIT: Executive summary: It's not technical factor, it's human factors and network effects. Like most everything in the IT industry these days.

              Comment

              • Netcracker
                Rookie
                • May 2014
                • 9

                #8
                Well, you are right. My question has been answered. No port - no future. My hope is lost. So long live C!
                This seems a quiet, peaceful place.

                Comment

                • mrrstark
                  Adept
                  • Aug 2013
                  • 101

                  #9
                  Take a look at the angdroid ports of Angband and variants to Android.

                  If you want to play with Java and Angband, maybe that's a place where you can make some improvements, especially in crafting better interfaces, and simplifying the tablet/phone integration effort.

                  Comment

                  • takkaria
                    Veteran
                    • Apr 2007
                    • 1951

                    #10
                    Abandon all hope, ye who enter here!
                    takkaria whispers something about options. -more-

                    Comment

                    • Derakon
                      Prophet
                      • Dec 2009
                      • 9022

                      #11
                      I'm curious: why did you want to see a Java port of Angband? Just for your personal hacking projects?

                      Comment

                      • d_m
                        Angband Devteam member
                        • Aug 2008
                        • 1517

                        #12
                        Originally posted by AnonymousHero
                        Scala is just a lot more concise, less ceremonious and has proper support for (G)ADTs. IME algebraic data types are a huge boon to productivity and safety.
                        Scala is one of the reasons I've been much less active hacking on Angband over the last few years: https://github.com/non/spire.
                        linux->xterm->screen->pmacs

                        Comment

                        Working...
                        😀
                        😂
                        🥰
                        😘
                        🤢
                        😎
                        😞
                        😡
                        👍
                        👎