Jump to content

Recommended Posts

Posted

There is a very cool software that i use, it is called JRebel(http://zeroturnaround.com/software/jrebel/).
 
What can it do?
You can reload any piece of code, without need to restart the server.
Let's say you created quite a large code, but simple error doesnt allow you to test it. Normally you would need to:
1. Fix the error
2. Compile fixes(3 seconds. If you are wondering how i compile my whole source code in 3 seconds, look below)
3. Close the Server(Lets say 2 seconds)
4. Create the Jars and paste them(3 seconds)
5. Start the server again(33 seconds)
6. Login(10 seconds)
7. Test
So totally it takes 51 seconds from fixing to next testing
 
With JRebel you need to:
1. Fix the error
2. Compile fixes(3 seconds)
3. Create the Jars and paste them(3 seconds)
4. Test
With JRebel it takes 6 seconds.
 
How long it takes to start the server with JRebel?
JRebel: 83 seconds
NO JRebel: 33 seconds
So that's big disadventage. If you are working on the code that runs at start of the server, its worth to disable the JRebel(it's very easy to disable it).
 
How applying the changes looks like?
1. Fix the error/make the improvement/add something new:
z8NW7AW.png
 
2. Compile changed classes
HCKW9lH.png

3. Build the Jars and paste them(I have got build file which automatically pastes my jars)
QmheC8p.png
 
When class is used by JVM, you will see the message that it was updated
rhGhrxl.png
 
4. Test
rlsSujE.png
 
How to install JRebel?
1. Get Trial(Don't worry about 2 weeks, it's very easy to crack or you can just buy it)
https://zeroturnaround.com/software/jrebel/download/
 
2. Activate it on your pc
- Intellij IDEA - https://zeroturnaround.com/software/jrebel/quickstart/intellij/#!/activation
- Eclipse - https://zeroturnaround.com/software/jrebel/quickstart/eclipse/#!/activation
 
3. Download JRebel.jar
https://zeroturnaround.com/software/jrebel/download/thank-you/?file=jrebel-6.1.3-nosetup.zip
 
4. Paste JRebel.jar near StartGameServer.bat
 
5. Put -javaagent:jrebel.jar just after java in StartGameServer.bat
5cxXKEO.png
 
6. You need to create jrebel folder near StartGameServer.bat and
- Add there jars that you want to be reloadable. I am adding just gameserver + scripts + commons
- So you will need to have those 3 jars in 2 locations: your libs + jrebel folder
- While launching the gameserver, remember that jars in jrebel must be exactly the same as your jars in libs, or JRebel will not work fine
zcscr1I.png
 
7. You need to create jrebel.xml, add it into your configs file
- Thats how my jrebel.xml looks like: http://pastebin.com/hNzjDE6R
- You should edit jarset dir, to link to your jrebel folder
 
8. Launch the gameserver. You should see something like this
I2Dj2sz.png
 
How to compile my changes so fast?
- I am compiling just classes that were modified lately, not the whole source
- I have got Build file which copies created jar to my libs + jrebel folder
 
So for the first time i click Build > Rebuild Project in Intellij IDEA(i don't know about eclipse). It takes a while but after that i can use Compile 'Player.java' or Make Project which compiles just changes files
The Compile files are put to "C:\Users\Michal\IdeaProjects\L2Tales\out\production\L2Tales"
My Build file: http://pastebin.com/MbkCBBVh

Posted

It's obviously a tool to develop, not a thing to keep on a live installation (just saying about your loading statement).

I didn't test it on live server, but i think it wouldn't work well because:

1. Longer start up time as you said

2. Most likely lower performance would cause lags

3. Reloading larger classes would be felt by players in game

 

For development, its great :)

Posted

I didn't test it on live server, but i think it wouldn't work well because:

1. Longer start up time as you said

2. Most likely lower performance would cause lags

3. Reloading larger classes would be felt by players in game

 

For development, its great :)

 

why dont u run ur server from the Eclipse then? I can't get it. I develop my servers from eclipse while its online, I edit code on the fly and the changes happen runtime..

Posted

why dont u run ur server from the Eclipse then? I can't get it. I develop my servers from eclipse while its online, I edit code on the fly and the changes happen runtime..

i play on your server and when you fix something you make a restart , but well its a nice tool for the outdoors

Posted

why dont u run ur server from the Eclipse then? I can't get it. I develop my servers from eclipse while its online, I edit code on the fly and the changes happen runtime..

I think you might be talking about HotSwap. You can see the differences in here: http://zeroturnaround.com/software/jrebel/features/

Posted (edited)

i play on your server and when you fix something you make a restart , but well its a nice tool for the outdoors

 

I said I develop, thats how I coded L2AEPvP back when I was developing it. Now its live and obviusly its not running in Eclipse..

 

 

I think you might be talking about HotSwap. You can see the differences in here: http://zeroturnaround.com/software/jrebel/features/

 
Im talking about Eclipse Debug that works like all Debug tools, you can even edit native C++ during runtime with good debugers..
Edited by xxdem

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...