Java-Gaming.org Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (767)
Games in Android Showcase (229)
games submitted by our members
Games in WIP (854)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Write Now, Run Anytime talk  (Read 1720 times)
0 Members and 1 Guest are viewing this topic.
Offline nsigma
« Posted 2018-03-01 11:57:55 »

Just noticed a video of my keynote (Write Now, Run Anytime) from JDD in Krakow last October has finally gone online, should anyone be interested in 40min of me talking about and demoing live / interactive coding in Java with Praxis LIVE.  Nothing like doing the first run of a new talk in front of ~700 Java devs at 9am.

May contain blinky visuals, cheesy techno and some poor tortured breakbeats!  Grin

<a href="http://www.youtube.com/v/3cQ-8wZwsmY?version=3&amp;hl=en_US&amp;start=" target="_blank">http://www.youtube.com/v/3cQ-8wZwsmY?version=3&amp;hl=en_US&amp;start=</a>

In other news, Praxis CORE (the hot code-reloading runtime part of all this) will be released under LGPL very soon!

Praxis LIVE - hybrid visual IDE for (live) creative coding
Offline Gornova
« Reply #1 - Posted 2018-03-01 13:25:07 »

Nice project, I'm not a music creator but this kind of IDE could be useful to build quick demos/intro to some projects. Because this is Java gaming, do you plan to add some kind of support to gaming build in the future ?

Blog | Last game Drone Swarm
Offline nsigma
« Reply #2 - Posted 2018-03-01 14:20:50 »

Nice project, I'm not a music creator but this kind of IDE could be useful to build quick demos/intro to some projects. Because this is Java gaming, do you plan to add some kind of support to gaming build in the future ?

Thanks!  Smiley What sort of support exactly do you mean?  I'm intrigued how much you watched, because there's a lot of stuff that is not music specific.  The core can work with any Java library, but there's specific modules that wrap Processing, OpenGL / GLSL support, video, mouse / keyboard control, sensor controls, etc.

I'm not personally interested in creating traditional games, but I have created real-world gaming-like experiences with it - eg.
 this was made with a very early version - http://www.java-gaming.org/topics/meeting-point-2014/34630/view.html  Still, if there's a feature you'd like to see, ask (or contribute!) - it's on GitHub.

Praxis CORE is not specific to any particular use (video, audio, gaming, etc.), although there are optional modules for those purposes - it's an attempt to bring some of the benefits of Erlang and Smalltalk to Java.

Praxis LIVE - hybrid visual IDE for (live) creative coding
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline h.pernpeintner

JGO Knight


Medals: 98



« Reply #3 - Posted 2018-03-01 14:31:17 »

I said it often, but once again: Your work is really really awesome.

it's an attempt to bring some of the benefits of Erlang and Smalltalk to Java.

What exactly do you mean by that? Could you give some examples?
Offline nsigma
« Reply #4 - Posted 2018-03-01 15:13:00 »

I said it often, but once again: Your work is really really awesome.

Thank you!  Grin

it's an attempt to bring some of the benefits of Erlang and Smalltalk to Java.

What exactly do you mean by that? Could you give some examples?

OK, I'll try a short version!  Wink  Erlang is actor-model based, designed for soft real-time and distributed systems, and supports the ability to hot swap running code without stopping.  Praxis CORE is also actor based (or an extension of), supports running across multiple processes / machines and allows for atomically hot swapping code.  Now Java supports some limited hot swapping of code in development, and things like JRebel extend on that, but in my opinion updating the behaviour of an existing class usually ends up in problems.  Instead, by using actors and throwaway classloaders, state injection, and splitting apart the idea of identity, state and behaviour it becomes possible to build an API that allows for runtime code replacement in a really stable way.

Likewise, Smalltalk is message-based, and influenced (although isn't) the actor model.  It also has really strong support for runtime introspection and coding, and image-based persistence.  Praxis LIVE brings some of that in.  It's worth taking a peek at Pharo for an example of what a contemporary Smalltalk IDE can do.  You also can start to get a sense of what OOP was meant to be about (hint, Java ain't it!)

Nothing radical in any of the pieces I'm putting together there, just trying to arrange them in different ways!  Smiley

Hopefully that makes some sense - check out the "technical stuff" bit of the talk from 24:55 - it has some slides that might illustrate that better.

Incidentally, the title of that talk is actually comes via a quote about Erlang - "if Java is Write Once, Run Anywhere, Erlang is Write Once, Run Forever".

Praxis LIVE - hybrid visual IDE for (live) creative coding
Offline h.pernpeintner

JGO Knight


Medals: 98



« Reply #5 - Posted 2018-03-01 15:52:20 »

Instead, by using actors and throwaway classloaders, state injection, and splitting apart the idea of identity, state and behaviour it becomes possible to build an API that allows for runtime code replacement in a really stable way.
Yes, certainly. I did a similar thing in my own game engine for reloading of textures, shader programs etc. during development, although my implementation is rudimentary I would say. I took a look at your projects some times already, but wasn't able to figure out: Is everything you load/reload an asset in the project workspace, a file you can load from the hard drive? Or did you implement a way that your project can for example load precompiled versions of assets as well?
How did you do the separation between identity and state, how does this look like implementation-wise? I'm currently working with IDs and/or constructs similar to Ref<T> here.

Likewise, Smalltalk is message-based, and influenced (although isn't) the actor model.  It also has really strong support for runtime introspection and coding, and image-based persistence.

Yea, I learned some of this stuff at the university, one professor of mine was some rare kind of smalltalk god Smiley Did you take a look at DCEVM?
Offline nsigma
« Reply #6 - Posted 2018-03-01 17:03:53 »

I took a look at your projects some times already, but wasn't able to figure out: Is everything you load/reload an asset in the project workspace, a file you can load from the hard drive? Or did you implement a way that your project can for example load precompiled versions of assets as well?

In terms of Java code (and shaders actually), everything is a String property.  Every time a component receives new code, it looks up another actor that provides compilation, etc. and sends it a message.  When the compiled code comes back later the behaviour gets swapped.  So javac is a key part of the runtime, although a bytecode cache is in development.  This is also fun because you can write components (actors) that generate source code for other components.

How did you do the separation between identity and state, how does this look like implementation-wise?

There's a slide for that!  Wink  Quite simply really - there are 3 classes for each actor - identity (component) wraps state (context) wraps behaviour (delegate).  The delegate is the user's code.  It uses annotations for defining state layout (and inputs/outputs, additional metadata).  A context is created for each delegate - it analyses the delegate, maintains the defined state, and knows how to process the previous context to inject state forward, dispose resources, etc.  The component is the bit that exists throughout.

Yea, I learned some of this stuff at the university, one professor of mine was some rare kind of smalltalk god Smiley

That seems to be where to find them! I never learned any of this at university - mainly because I didn't to computer science -
 sometimes think I should have, but I seem to have ended up mostly doing it anyway! Grin

Did you take a look at DCEVM?

Yes, a bit.  Still has the problem (in my opinion) of trying to change existing classes IIRC?  One reason I like the simpler blank slate approach is that if you accidentally remove something essential it tends to fail immediately rather than 3 days later when you try to run the project again.

Praxis LIVE - hybrid visual IDE for (live) creative coding
Pages: [1]
  ignore  |  Print  
 
 

 
EgonOlsen (1278 views)
2018-06-10 19:43:48

EgonOlsen (1146 views)
2018-06-10 19:43:44

EgonOlsen (881 views)
2018-06-10 19:43:20

DesertCoockie (1290 views)
2018-05-13 18:23:11

nelsongames (1106 views)
2018-04-24 18:15:36

nelsongames (1337 views)
2018-04-24 18:14:32

ivj94 (2077 views)
2018-03-24 14:47:39

ivj94 (1230 views)
2018-03-24 14:46:31

ivj94 (2188 views)
2018-03-24 14:43:53

Solater (796 views)
2018-03-17 05:04:08
Deployment and Packaging
by mudlee
2018-08-22 18:09:50

Java Gaming Resources
by gouessej
2018-08-22 08:19:41

Deployment and Packaging
by gouessej
2018-08-22 08:04:08

Deployment and Packaging
by gouessej
2018-08-22 08:03:45

Deployment and Packaging
by philfrei
2018-08-20 02:33:38

Deployment and Packaging
by philfrei
2018-08-20 02:29:55

Deployment and Packaging
by philfrei
2018-08-19 23:56:20

Deployment and Packaging
by philfrei
2018-08-19 23:54:46
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!