greptilian logo

IRC log for #virtualJUG, 2015-05-20

virtualjug.com

| Channels | #virtualJUG index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

All times shown according to UTC.

Time S Nick Message
06:09 mmatloka joined #virtualJUG
06:21 millrossjez joined #virtualJUG
06:29 _ollie joined #virtualJUG
07:29 krjura joined #virtualJUG
08:12 krjura joined #virtualJUG
08:21 _ollie joined #virtualJUG
09:17 Bevin joined #virtualJUG
11:54 edburns joined #virtualJUG
12:04 shelajev joined #virtualJUG
12:07 shelajev hola!
12:07 shelajev so ready for the session today!
12:08 shelajev can Rafael read bytecode listings without any help or external materials?
12:27 Maldivia he better :D
12:48 shelajev joined #virtualJUG
13:43 shelajev joined #virtualJUG
13:46 shelajev_ joined #virtualJUG
14:43 shelajev_ Hello Simon! Everything is ready
14:43 shelajev_ hopefully
14:43 sjmaple hello hello :)
14:52 Maldivia :)
15:08 raphw joined #virtualJUG
15:28 LizMaple joined #virtualJUG
15:30 LizMaple hello ?
15:32 danim8rix joined #virtualJUG
15:32 Traivor joined #virtualJUG
15:36 pdurbin LizMaple: hi
15:39 buergich joined #virtualJUG
15:43 Elban joined #virtualJUG
15:44 Elban Hi here :)
15:49 sjmaple hello :)
15:49 shelajev_ hello everyone!
15:50 shelajev_ is LizMaple the actual Liz Maple or is it an imposter to soften Simon?
15:51 sandor_nemeth joined #virtualJUG
15:54 millrossjez hi
15:55 geoL joined #virtualJUG
15:55 D-Spair Hidee ho neighbors!
15:55 sandor_nemeth hi everyone
15:57 LizMaple I'm real Oleg :)
15:57 Kirk joined #virtualJUG
15:57 carljokl joined #virtualJUG
15:57 mambrujo joined #virtualJUG
15:58 mambrujo Hi
15:58 carljokl Bytecode time...
15:58 Maldivia that's every day though :D
15:58 LizMaple joined #virtualJUG
15:59 shelajev_ hi Liz!
15:59 shelajev_ good to know :)
15:59 shelajev_ Simon had to get properly dressed now that you're watching
15:59 cafencup joined #virtualJUG
15:59 sandor_nemeth @shelajev :D
16:00 sandor_nemeth we'll see that in a few minutes
16:00 Pascal joined #virtualJUG
16:00 frack joined #virtualJUG
16:01 brunobat joined #virtualJUG
16:01 lohit joined #virtualJUG
16:01 sury joined #virtualJUG
16:01 Guest15995 left #virtualJUG
16:02 lambdai joined #virtualJUG
16:02 D-Spair Heh! Simon's getting dressed up and here I sit in my ratty old DNS.com T-shirt... :stuck_out_tongue:
16:02 danim8rix-tab joined #virtualJUG
16:02 alobodzki joined #virtualJUG
16:02 gravy joined #virtualJUG
16:02 Darren joined #virtualJUG
16:02 thexceptioncat joined #virtualJUG
16:02 andreaiacono joined #virtualJUG
16:03 gafnerpa_ch joined #virtualJUG
16:03 charles-e joined #virtualJUG
16:03 znurgl joined #virtualJUG
16:03 PacoZar joined #virtualJUG
16:03 thexceptioncat is the stream showing?
16:03 markdavison joined #virtualJUG
16:03 D-Spair thexceptioncat:  Not yet
16:03 sandor_nemeth not yet
16:03 alobodzki I don't see anything yet
16:03 jchochli_ joined #virtualJUG
16:04 Integer-J joined #virtualJUG
16:04 kervin joined #virtualJUG
16:04 melonstorm joined #virtualJUG
16:04 asasasafsaf joined #virtualJUG
16:04 matteogales joined #virtualJUG
16:04 jeffpoole joined #virtualJUG
16:05 cafrjbr joined #virtualJUG
16:05 alobodzki You don't look silly at all
16:05 Matthew joined #virtualJUG
16:05 IanG joined #virtualJUG
16:05 thexceptioncat glad to know its not just me
16:06 monksy joined #virtualJUG
16:06 znurgl left #virtualJUG
16:06 monksy the share buttons on the live stream just fill in the url to virtualjug and not the stream you're watching
16:06 Elban joined #virtualJUG
16:06 thexceptioncat left #virtualJUG
16:06 znurgl joined #virtualJUG
16:07 monksy if you were having issues with the stream just hit refresh
16:07 monksy its going on now
16:07 LizMaple Hey Si :o)
16:08 twasyl joined #virtualJUG
16:08 Henri joined #virtualJUG
16:08 k3rv1n joined #virtualJUG
16:08 carljokl joined #virtualJUG
16:08 shelajev_ is the video on virtualjug.com/#live working?
16:09 twasyl yes
16:09 SNR joined #virtualJUG
16:09 carljokl I had to refresh to get it working again
16:09 sandor_nemeth yes
16:09 LizMaple it's fine here
16:09 sandor_nemeth both on virtualjug.com/#live and on youtube
16:10 Kriss joined #virtualJUG
16:10 sjmaple as mentioned, questions in here pls :)
16:11 jchochli_ can't believe he left out clojure
16:11 jchochli_ :)
16:11 millrossjez and kotlin :)
16:12 * D-Spair jumps on the bandwagon
16:12 D-Spair And Jython and Ceylon and JavaScript
16:12 millrossjez :)
16:12 PacoZar and php
16:12 PM771 joined #virtualJUG
16:12 D-Spair PacoZar:  YEP!
16:13 rgra joined #virtualJUG
16:13 D-Spair And all of the above are supported inside of Vert.x!
16:13 Maldivia and that language poeple had to implement a compiler for in their compiler theory course at Universities :D
16:13 millrossjez ;) D-Spair not all on vert.x 3 yet I thought
16:13 Henri golo? :-)
16:13 D-Spair Which reminds me, sjmaple : When are we getting Tim Fox on for a session?!?!
16:13 asasasafsaf left #virtualJUG
16:13 D-Spair millrossjez:  Not on v3 yet, but JRuby and Jython should be ready soon.
16:14 PacoZar D-Spair: a vjug on vertx would be awesome. I am following the v3 with a lot of excitement
16:14 D-Spair PacoZar:  I did a session at Code PaLOUsa a few weeks ago using Vert.x 3
16:15 D-Spair PacoZar:  https://github.com/JUGGL/codepalousa-vertx-chat
16:15 PacoZar D-Spair: I saw your github code... Really neat!
16:15 sjmaple D-Spair: I've been talking to Tim and he's still focus on Vert.x development...
16:15 mselender joined #virtualJUG
16:15 sjmaple ... but he is on the list and will give a session when it's fully done
16:15 D-Spair sjmaple:  SWEET!
16:15 D-Spair sjmaple:  Yeah, Tim and Julien are VERY hard at work on getting 3.0.0 out the door.
16:16 sjmaple yeh, once it's out he'll do it
16:16 sjmaple :)
16:16 sjmaple it's dragging it's feet :)
16:16 PacoZar sjmaple:yeah! the release date would be this summer
16:16 sjmaple its*
16:16 shelajev_ if anyone wants some written materials on bytecode
16:16 sjmaple it was supposed to be Dec! :)
16:16 sjmaple last year
16:16 shelajev_ we have a RebelLabs report on mastering it: http://zeroturnaround.com/rebellabs/rebel-labs-report-mastering-java-bytecode-at-the-core-of-the-jvm/
16:17 brunobat joined #virtualJUG
16:17 PacoZar shelajev_:Thanks for the link!
16:18 millrossjez thanks Oleg, I for one will be reading that
16:18 shelajev_ you're welcome! it's also available in a neat PDF form
16:18 TVP joined #virtualJUG
16:18 shelajev_ http://pages.zeroturnaround.com/RebelLabs-AllReportLanders_MasteringJavaBytecodeattheCoreoftheJVM.html
16:18 shelajev_ that's gated
16:18 shelajev_ and if you leave your email there I'll write you an email once in a while
16:18 TVP Guys joining from India, good session but not sure why my video quality is poor, any reasons?
16:19 sjmaple click on the cog at the bottom and change your streaming quality
16:19 twasyl What if the instruction is return 2* 3 + 1 ?
16:19 D-Spair TVP, try manually selecting 720p in the hangout settings.
16:20 PacoZar so bytecode is very close to assembler?
16:20 shelajev_ hi twasyl!
16:21 Traivor joined #virtualJUG
16:21 twasyl hi Oleg :)
16:21 TVP Was seeing in this page, noticed YouTube link  thanks all
16:21 sol908 joined #virtualJUG
16:21 shelajev_ yeah, it has pretty basic math operations
16:21 Elban joined #virtualJUG
16:21 twasyl Yeah
16:21 KotaiVictor joined #virtualJUG
16:21 shelajev_ and stack operation operations
16:21 twasyl Hi SImon
16:22 dove joined #virtualJUG
16:22 monksy a question for the end of the talk: Are there any interesting corner cases that you've found in the JVM?
16:23 PacoZar Great, thanks!
16:23 sjmaple the JVM has more corners than middle bits :)
16:23 Maldivia monksy: hehe -- there are _many_ corner cases, depending on version and vendor :D
16:24 sjmaple I bet there are some interesting answers though
16:24 monksy I'm just interested in the interesting ones that he has found... but thats a question for him after the presentation
16:24 sjmaple I'll ask at the end, I'm sure Rafa has some amusing stories
16:24 melonstorm Well, this is interesting. Reminds me of Python.
16:24 monksy thanks!
16:25 PacoZar melonstorm:why reminds you of Python?
16:25 melonstorm PacoZar, Python's OOP model requires your class's instance methods to take this as the first argument.
16:26 PacoZar melonstorm:oh! thanks!
16:26 PacoZar didn't know that about Python
16:28 twasyl ILOAD_1 is only for an int primitive type or also for Objects? And when lambdas are passed in parameters?
16:28 sudhcha joined #virtualJUG
16:28 Maldivia twasyl: ILOAD_1 would be for int primitives, ALOAD is for object types
16:28 twasyl Thanks
16:29 Maldivia twasyl: similar LLOAD for long, DLOAD for double, FLOAD for float
16:29 twasyl got it, tahnks
16:29 twasyl thanks*
16:32 twasyl How the byte code manages the unboxing/outboxing? Does it automatically add operations like I2S?
16:33 twasyl inboxing*
16:33 Maldivia boxing/unboxing is done by the compiler, by calling Integer.valueOf
16:33 carljokl I would imagine autoboxing is syntactic sugar
16:33 Maldivia (and similar methods for other types)
16:33 carljokl Yes the compiler will expand out the code
16:35 mambrujo joined #virtualJUG
16:35 dmitrygusev joined #virtualJUG
16:37 Maldivia String values :)
16:39 rgra Try Map<String,Integer> map....; map.put("test, null); int i = map.get("test");
16:39 rgra Gives you an NPE because compiler translates it to int i = map.get("test").intValue()
16:39 Errorneous joined #virtualJUG
16:39 mohan joined #virtualJUG
16:40 sjmaple hey Rabea :)
16:40 sjmaple that's a really interesting bug!
16:40 Maldivia it's not a bug... you're trying to dereference null
16:41 sjmaple no you're not
16:41 sandor_nemeth @sjmaple .. I'd say that's a feature, not a bug
16:41 sjmaple Java is trying to do that :)
16:41 sjmaple the problem is null can't be assigned to int ;)
16:41 rgra I have it in my tests when hiring people... most of them don't find this hidden NPE in this case
16:41 rgra Seems like you two are having a good time in Boston :)
16:42 Guest88326 What is the newer 'stackmap' used for ?
16:42 mselender joined #virtualJUG
16:42 Maldivia Guest88326: faster/"better" verification of classes
16:43 Guest88326 Meaning ?
16:44 Maldivia Guest88326: before the VM loads a class, it verifies that the bytecode is sane -- stackmaps is used there to help that verification, by explicitly stating what types locals/stacks contain at various points in your code
16:44 paltun joined #virtualJUG
16:45 twasyl Is INVOKEDYNAMIC an improvement of INVOKEVIRTUAL?
16:45 Maldivia totally different :=
16:46 mustafap joined #virtualJUG
16:46 TVP joined #virtualJUG
16:46 Guest88326 Thanks
16:46 sjmaple yw
16:47 sjmaple twasyl afaik, invoke virtual is primarily used for constructor methods
16:47 TVP If everything is represented as bytes , how does jVM know which byte is from constant pool etc.?
16:47 twasyl thx
16:47 Maldivia sjmaple: no no.... invoke virtual is normal method calls, invokespecial is constructor/super/private
16:47 sjmaple oh, yeh, that's right, got them mixed up!
16:48 shelajev_ here's a neat resourse on the JVM instructions: http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings
16:48 twasyl @sjmaple: too much invoke
16:48 twasyl ;)
16:48 sjmaple haha
16:48 twasyl thx Oleg
16:48 Maldivia twasyl: invokevirtual, invokeinterface, invokespecial, invokeinterface, invokedynamic... only 5 :)
16:48 sjmaple TVP, will ask in a bit...
16:49 Maldivia oh, I had invokeinterface twice, replace one with invokestatic :D
16:50 alobodzki also final methods
16:51 Maldivia final methods are invokevirtual as well (unless they are private or static)
16:51 twasyl any invokerebellabs? (joking)
16:52 SNR joined #virtualJUG
16:53 Damn joined #virtualJUG
16:53 Maldivia twasyl: not yet, but go champion a JEP to get one :)
16:53 sjmaple don't joke, create a JEP
16:53 twasyl :)
16:53 sjmaple haha
16:54 twasyl maybe stupid question: Nashorn uses INVOKEDYNAMIC for calling JS script that uses Java classes?
16:55 Maldivia twasyl: lambdas in java8 is INVOKEDYNAMIC
16:55 PM771 How is method overloading handled?
16:57 rgra Here something on Nashorn and invokedynamic: http://java.dzone.com/articles/how-java-8-handles-javascript
16:57 Maldivia PM771: they have different signatures in the JVM so it sees them as completely different method, and as shown earlier, the compiler writes directly to bytecode which one to use
16:58 twasyl @rgra: great thanks
16:59 carljokl Are there downsides or risks from using Invoke Dynamic?
17:00 rgra the way lambdas are implemented also makes it possible to easily compile Java 8 to Java 7 bytecode: https://github.com/orfjackal/retrolambda
17:00 rgra Really interesting!
17:05 alobodzki Shouldn't Liskov substitution be less or equally restrictive?
17:09 twasyl That's useful for mocking
17:09 rgra But for mocking there's already libraries which hide all these details for you in a mocking oriented API
17:09 twasyl yep
17:09 twasyl mockito and friends
17:10 shelajev_ but sometimes you want to generate things on the fly during runtime
17:10 twasyl like JRebel right?
17:10 jchochli_ left #virtualJUG
17:10 shelajev_ :) like XRebel, Chronon, any profiler etc
17:11 shelajev_ even when you just want to generate a proxy
17:11 shelajev_ for a model class to make it Hibernate aware :)
17:11 rgra BTW Oleg I have to correct myself. Favorite open source projekt: Lombok :)
17:11 rgra Which does also use runtime code generation to patch Eclipse for example
17:11 shelajev_ thanks, Rabea :) I'll update the recap post! :D
17:12 Maldivia lombok isn't runtime code generation, it does it at compile time with annotation parser
17:13 rgra Yes, but I does patch eclipse to allow refactoring etc. on several locations
17:14 Maldivia ah, ok
17:14 rgra https://github.com/rzwitserloot/lombok/blob/master/src/eclipseAgent/lombok/eclipse/agent/EclipsePatcher.java
17:15 Maldivia rgra: missed  the fact you were talking about the eclipse plugin, thought you were talking about lombok itself :)
17:17 rgra What is the most amazing example you have seen implemented with ByteBuddy,  Rafael?
17:17 carljokl Now Dalvik is superseded by ART
17:21 D-Spair Looks like implementing AOP-style programming in Bytebuddy would be pretty awesome!
17:21 PacoZar http://bytebuddy.net/#/
17:23 markdavison joined #virtualJUG
17:23 k3rv1n Question : Is there an "Interactive dissembler" like "IDA Pro" for Java?
17:24 D-Spair Thanks Rafael!
17:24 twasyl Thanks Rafael !!!
17:25 znurgl it was really awesome, thanks!
17:25 PeTeC joined #virtualJUG
17:25 melonstorm Thanks, Rafael~
17:27 shelajev_ k3rv1n, I think you're looking for JITWatch
17:27 shelajev_ not sure if it's like IDA Pro
17:28 PacoZar Question: How would you recommend to handle interop with C dlls?
17:28 k3rv1n thanks, not really.
17:29 markdavison joined #virtualJUG
17:29 k3rv1n it would convert *.class to bytecode.  Then it would allow modifying that bytecode in memory.  It also lets you step through execution
17:30 buergich left #virtualJUG
17:31 k3rv1n You can then save your modified bytecode as *.class files.  So basically, view, debug/step, modify, save.  All in bytecode and *.class files.
17:32 k3rv1n IDA Pro : https://www.hex-rays.com/products/ida/
17:32 dmitrygusev joined #virtualJUG
17:33 Maldivia k3rv1n: problem is, that java debugging is based on lines, not stepping individual instructions, so debugging directly in bytecode isn't supported by the JVM
17:34 Donnerbart joined #virtualJUG
17:34 k3rv1n I see thanks.
17:35 melonstorm Does anyone have a link to the book?
17:35 twasyl bye bye guys
17:36 twasyl was great !!!
17:36 raphw ill be here after the interview
17:36 raphw thank you for attending!
17:36 Maldivia enginnering solution... duct tape and wd40 can solve everything
17:36 Donnerbart thx a lot for the great session!
17:36 rgra left #virtualJUG
17:38 Traivor left #virtualJUG
17:41 markdavison joined #virtualJUG
17:42 D-Spair We should totally do what Rafael suggested and start an open-source security framework project using Byte Buddy and annotations...
17:44 D-Spair It would be fantastic... Perhaps it could wrap around some existing security/AAA tools like Shiro or other to do the external bits, but then implement some annotations and exception classes to allow for wrapping methods which have cross-cutting concerns...
17:50 sjmaple Maldivia: just a hammer short of the full set... btw, do I know you? ;) I feel like I do! :D
17:50 Maldivia :D
17:50 Maldivia btw Rafael -- are you attending GeekOut this year?
17:51 sjmaple no, I don't think he is (sad-face)
17:51 sjmaple maybe as a speaker next year :)
17:57 PacoZar Hey guys is the bytecode modified in memory by the jvm/jit?
17:59 Maldivia the jit doesn't modify bytecode, it compiles it into machine code
17:59 Maldivia if you redefine the class at runtime, then yes, the jvm modifies the bytecode
18:00 Maldivia and you cannot be 100% sure that the bytecode you get from the JVM via the Instrumentation API is the same as you would get form loading from .class file on disk/jar
18:01 sjmaple replay link is here http://virtualjug.com/java-byte-code-in-practice/
18:01 sjmaple with slides
18:02 Maldivia (especially attributes are sometimes list when getting the bytes from the JVM)
18:02 Maldivia lost*
18:03 PacoZar Maldivia:cool thanks!
18:03 Maldivia and hint: do not try to redefine a class that uses invokedynamic, if you're running java7 :D
18:05 jeffpoole joined #virtualJUG
18:11 markdavison joined #virtualJUG
18:16 raphw thanks again for attending, i am still here a bit, thanks for answering questions of each other in the mean time
18:16 raphw is there anything that was not clear from the session? anything you want to know?
18:16 markdavison joined #virtualJUG
18:16 raphw i am happy to help
18:20 raphw even better, then i get to go home! see you guys arround, thanks for coming to this talk!
18:23 dmitrygusev joined #virtualJUG
18:32 millrossjez joined #virtualJUG
18:36 millrossjez joined #virtualJUG
18:40 millrossjez joined #virtualJUG
18:45 millrossjez joined #virtualJUG
18:52 millrossjez joined #virtualJUG
19:00 markdavison joined #virtualJUG
19:03 millrossjez joined #virtualJUG
19:11 millrossjez joined #virtualJUG
19:15 millrossjez joined #virtualJUG
19:30 PacoZar Thanks raphw!
19:49 LizMaple joined #virtualJUG
20:25 millrossjez joined #virtualJUG
20:46 millrossjez joined #virtualJUG
20:51 PacoZar joined #virtualJUG
21:14 spodge joined #virtualJUG
21:15 spodge HAI!
21:18 millrossjez joined #virtualJUG
21:46 shelajev joined #virtualJUG
22:56 PM771 joined #virtualJUG

| Channels | #virtualJUG index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

virtualjug.com