[{"data":1,"prerenderedAt":491},["ShallowReactive",2],{"project-15644430":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":43,"post_text":45,"what":46,"said":95,"maker_in_thread":214,"shape":222,"grid":227,"attempts":453,"same_week":454,"maker_shows":38,"maker_hidden":483,"reader_version":484,"card":485},"15644430","Javalin 1.0","A Kotlin\u002FJava web framework","title","Show HN: Javalin 1.0 – A Kotlin\u002FJava web framework","https:\u002F\u002Fjavalin.io\u002Fnews\u002Fjavalin-1.0.0-stable.html","javalin.io","tipsy-",1510070192,2017,271,87,85,2242,4,"legend","languages","web framework","library",[24,25,26,27,28],"kotlin web framework","java web framework","jetty","microframework","kotlin java interop","debated",0.049,{"positive":32,"neutral":33,"mixed":34,"critical":32},8,15,1,32,{"design":37,"performance":40,"idea":42},{"positive":38,"critical":39},2,3,{"positive":41,"critical":34},0,{"positive":38,"critical":39},[44,41,41,41,41,41,41,41,41,41,41,41,39,39,39,39,44,41,41,39,41,41,41,39,44,34,41,39,39,39,39,44,34,44,34,39,39,34,39,34],5,null,{"problem":47,"audience":57,"pricing":45,"motivation":65,"time_to_build":45,"stack":70,"openness":92,"stage":93,"team_size":94},{"value":48,"source":49,"evidence":50},"Writing simple web APIs and servers in Kotlin or Java without heavy setup","inferred",[51,54],{"id":52,"by":11,"text":53},"15645148","It's not that much more work. You have to be careful with a few concepts (like SAM\u002FFunctional interfaces), but most of the time you can just write in Kotlin. I want to support…",{"id":55,"by":11,"text":56},"15644773","That's the point. It's not a framework for kotlin purists, but for java-shops\u002Fjava-devs who want to try out kotlin. It should work more or less the same in both languages.",{"value":58,"source":59,"evidence":60},"Java developers moving to Kotlin, and Java shops","maker",[61,64],{"id":62,"by":11,"text":63},"15646201","I'm slightly biased of course, but Javalin is just a lot simpler to use. That might be because it's inherently simpler, or because Ktor's docs (as you pointed out) are very…",{"id":52,"by":11,"text":53},{"value":66,"source":59,"evidence":67},"Make a simple framework for Java devs trying Kotlin",[68,69],{"id":55,"by":11,"text":56},{"id":52,"by":11,"text":53},[71,77,81],{"value":72,"source":59,"evidence":73},"Kotlin",[74],{"id":75,"by":11,"text":76},"15645362","Thanks! Yeah, I had to leave a few parts as Java in order to get the interop right. Anything that takes an functional interface needs to be Java, so the main API entry points are…",{"value":78,"source":59,"evidence":79},"Java",[80],{"id":75,"by":11,"text":76},{"value":82,"source":83,"evidence":84},"Jetty","commenter",[85,88],{"id":86,"by":11,"text":87},"15645212","> for sure, Jetty provides a lot of convenience classes on top of that plumbing That's really the benefit. I have been using jetty for years. I trust them a lot more than I trust…",{"id":89,"by":90,"text":91},"15644950","meddlepal","Why not? Jetty is pretty lightweight as far as JVM http servers go...","open_source","launched","unknown",{"praise":96,"objections":116,"requests":146,"questions":173,"alternatives":188},[97,112],{"value":98,"source":83,"evidence":99},"Clean, concise API that is simple to pick up",[100,104,108],{"id":101,"by":102,"text":103},"15644835","ww520","This looks clean and concise. A very good start. I like it, easy to pick up. Kudos for releasing 1.0.",{"id":105,"by":106,"text":107},"15645927","rajangdavis","Not a Java developer by any means, but I wanted to say this looks like a very clean and well thought out design.",{"id":109,"by":110,"text":111},"15646070","matrix","Looks nice and clean. What use cases make this a better choice than Ktor? This is an important question to answer because Ktor seems a bit more complete, has more contributors,…",{"value":113,"source":83,"evidence":114},"Better documentation than Ktor",[115],{"id":109,"by":110,"text":111},[117,132,139],{"value":118,"source":83,"evidence":119},"Java-Kotlin interop is harder than claimed for some features",[120,124,128],{"id":121,"by":122,"text":123},"15649082","danneu","I'm really rusty, but if I can recall the simplest example correctly, you can't just naively go from this Kotlin code: ``` Server { req -> Response().html(\"\u003Ch1>Hello world\u003C\u002Fh1>\")…",{"id":125,"by":126,"text":127},"15649351","nostrademons","That's because the concept of a typed lambda function doesn't really exist in Java; in Java 8 lambdas are syntactic sugar for SAM-type object creation. (There are other interface…",{"id":129,"by":130,"text":131},"15652517","edem","Now that is true. You also can't use reified generics (which is a bit hacky anyway).",{"value":133,"source":83,"evidence":134},"Java version is not much shorter than Kotlin",[135],{"id":136,"by":137,"text":138},"15644740","viach","Looks like Java version is not that different in terms of readability and lines of code...",{"value":140,"source":83,"evidence":141},"Calling it micro is questionable since it uses Jetty",[142],{"id":143,"by":144,"text":145},"15644846","merb","I'm not sure if I would call a framework that uses jetty under the hood, that micro...",[147,159,166],{"value":148,"source":83,"evidence":149},"Comparison with Ktor and vert.x",[150,151,155],{"id":109,"by":110,"text":111},{"id":152,"by":153,"text":154},"15645009","sorokod","How does Javalin comapres to ktor ?",{"id":156,"by":157,"text":158},"15648394","nmalaguti","How would this compare with something like vert.x? http:\u002F\u002Fvertx.io",{"value":160,"source":83,"evidence":161},"Metrics and healthchecks support",[162],{"id":163,"by":164,"text":165},"15650930","kochthesecond","How about metrics\u002Fhealthchecks?",{"value":167,"source":83,"evidence":168},"REST endpoint versioning support",[169],{"id":170,"by":171,"text":172},"15651693","5ersi","Does Javalin have support for REST endpoint versioning? I.e. does it support any of versioning types mentioned here: https:\u002F\u002Fwww.troyhunt.com\u002Fyour-api-versioning-is-wrong-which-is\u002F",[174,181],{"value":175,"source":83,"evidence":176},"Why embed Jetty instead of plain java.nio",[177],{"id":178,"by":179,"text":180},"15645112","norswap","Can someone illuminate me on the necessity\u002Fbenefits of embedding Jetty? I can never seem to understand what it offers that java.nio does not on a fundamental plumbing level (for…",{"value":182,"source":83,"evidence":183},"Why routes can be added after server start",[184],{"id":185,"by":186,"text":187},"15646462","strictfp","Awesome! Why are routes added after the server has started? That makes me a bit worried, I would like to initialize the app completely before accepting requests, that's more or…",[189,193,203,207],{"value":190,"source":83,"evidence":191},"Ktor",[192],{"id":109,"by":110,"text":111},{"value":194,"source":83,"evidence":195},"Spark \u002F SparkJava",[196,200],{"id":197,"by":198,"text":199},"15644987","pvg","It says it's 'inspired by Sparkjava', what does it do differently and\u002For better?",{"id":201,"by":90,"text":202},"15644962","I've been thinking about porting from sparkjava (another jvm jetty based microframework) to this. Cool. My problem with Sparkjava is the slow development time.",{"value":204,"source":83,"evidence":205},"vert.x",[206],{"id":156,"by":157,"text":158},{"value":208,"source":83,"evidence":209},"NancyFx",[210],{"id":211,"by":212,"text":213},"15644820","eptakilo","This reminds me of NancyFx for .Net and Flask for Python. I enjoy micro-frameworks like these, They make web development a bit less intimidating. I hope this projects takes off.",{"comments":215,"answered":44,"key":216},11,[217,218,219],{"id":75,"text":76},{"id":86,"text":87},{"id":220,"text":221},"15646473","Thanks! Java8+ is what you make of it really. The syntax and standard APIs are still a bit clunky compared to $otherJvmLanguage, but you can make great APIs in Java.",{"commenters":223,"max_depth":224,"maker_replies":215,"first_comment_mins":225,"lifespan_hours":226},59,7,29,71,[228,231,233,237,240,244,246,249,252,255,257,260,263,265,268,270,272,273,276,279,281,283,285,287,288,289,291,293,294,295,299,302,306,309,312,314,318,319,322,325,328,331,333,335,336,339,342,345,348,351,353,355,356,360,362,366,367,370,372,374,377,379,381,383,385,387,390,394,396,398,401,404,406,408,412,415,419,423,425,427,429,432,434,438,441,444,449],[229,41,44,230,122,41],"15644996","maker\u002Fpositive\u002Fnone",[75,41,41,232,11,34],"project\u002Fneutral\u002Fdesign",[234,41,41,235,236,41],"15645846","commenter\u002Fneutral\u002Fnone","hota_mazi",[238,41,41,235,239,41],"15645976","faical",[241,41,41,242,243,41],"15647196","other\u002Fneutral\u002Fnone","fauigerzigerk",[245,41,41,235,236,41],"15649502",[247,41,41,235,248,41],"15646024","stewbrew",[250,41,41,235,251,41],"15646173","dradtke",[253,41,41,235,254,41],"15646566","EddieRingle",[256,41,41,235,130,41],"15648907",[258,41,41,235,259,41],"15652622","pdpi",[261,41,41,235,262,41],"15652940","lmm",[264,41,41,235,130,41],"15658955",[266,41,41,235,267,41],"15647778","tsvetkov",[269,41,41,235,130,41],"15648901",[271,41,41,235,122,41],"15649219",[129,41,41,235,130,41],[274,41,41,235,275,41],"15655609","PopsiclePete",[277,41,41,235,278,41],"15656253","hibbelig",[280,41,41,235,130,41],"15658968",[282,41,41,235,126,41],"15648916",[284,41,41,235,122,41],"15649170",[286,41,41,235,126,41],"15649224",[121,41,41,235,122,41],[125,41,41,235,126,41],[290,41,41,235,130,41],"15648832",[292,41,41,235,262,41],"15652970",[178,34,39,232,179,41],[86,34,41,232,11,34],[296,34,39,297,298,41],"15645520","project\u002Fneutral\u002Fperformance","bborud",[300,34,39,297,301,41],"15645660","Scarbutt",[303,34,39,304,305,41],"15648019","project\u002Fneutral\u002Fnone","emmelaich",[307,34,39,232,308,41],"15647770","le-mark",[310,34,41,242,311,41],"15649020","saurik",[313,34,41,235,179,41],"15651064",[315,38,44,316,317,41],"15646386","project\u002Fpositive\u002Fnone","kentosi",[220,38,41,304,11,34],[320,39,41,242,321,41],"15645372","patates",[323,39,41,242,324,41],"15645420","mulrian",[326,39,41,242,327,41],"15645431","nekitamo",[329,39,41,242,330,41],"15645490","gnud",[211,18,44,332,212,41],"project\u002Fpositive\u002Fidea",[143,18,34,334,144,41],"project\u002Fcritical\u002Fnone",[89,18,41,235,90,41],[337,18,41,235,338,41],"15644958","peeters",[340,18,41,235,341,41],"15646841","oaiey",[343,18,41,242,344,41],"15645174","jordanab",[346,18,41,235,347,41],"15646068","m_fayer",[349,18,41,242,350,41],"15646246","dodyg",[352,18,41,242,347,41],"15647699",[109,44,39,354,110,41],"project\u002Fneutral\u002Fidea",[62,44,41,354,11,34],[357,358,44,316,359,41],"15646264",6,"jorgemf",[361,358,41,230,11,34],"15646806",[363,224,34,364,365,41],"15645089","project\u002Fcritical\u002Fdesign","ajnin",[52,224,41,232,11,34],[368,224,41,235,369,41],"15645811","eeperson",[371,224,41,235,11,34],"15646290",[373,224,41,235,369,41],"15646996",[375,224,39,232,376,41],"15645161","nevi-me",[105,32,44,378,106,41],"project\u002Fpositive\u002Fdesign",[197,380,39,354,198,41],9,[136,382,34,364,137,41],10,[55,382,41,384,11,34],"maker\u002Fneutral\u002Fidea",[185,215,39,386,186,41],"project\u002Fmixed\u002Fperformance",[388,215,41,389,11,34],"15646499","maker\u002Fneutral\u002Fperformance",[391,392,39,354,393,41],"15644881",12,"asplake",[152,395,39,304,153,41],13,[201,397,44,332,90,41],14,[399,33,34,400,341,41],"15646958","project\u002Fcritical\u002Fidea",[402,33,41,242,403,41],"15647929","wiineeth",[170,405,39,354,171,41],16,[101,407,44,378,102,41],17,[409,410,34,364,411,41],"15644697",18,"Zolomon",[413,410,41,414,11,34],"15644783","maker\u002Fneutral\u002Fnone",[416,410,41,417,418,41],"15658787","commenter\u002Fneutral\u002Fdesign","michel-slm",[420,421,39,354,422,41],"15644883",19,"agumonkey",[156,424,39,304,157,41],20,[426,424,41,384,11,34],"15648644",[163,428,39,304,164,41],21,[430,428,34,400,431,41],"15651017","mustardo",[433,428,41,235,164,41],"15670392",[435,436,44,316,437,41],"15644733",22,"behnood85",[439,436,34,400,440,41],"15645615","ryenus",[442,436,39,304,443,41],"15650422","campers",[445,446,34,447,448,41],"15649106",23,"project\u002Fcritical\u002Fperformance","xaduha",[450,451,41,242,452,41],"15650494",24,"el_tone",[],[455,459,464,469,474,479],{"id":456,"name":457,"points":458,"category":20},"15624206","Server.js",295,{"id":460,"name":461,"points":462,"category":463},"15645276","Orange Forum",226,"infrastructure",{"id":465,"name":466,"points":467,"category":468},"15611605","Link.fish",201,"web_saas",{"id":470,"name":471,"points":472,"category":473},"15622140","CertStream",142,"security_privacy",{"id":475,"name":476,"points":477,"category":478},"15638201","OSX-ISO",135,"dev_tools",{"id":480,"name":481,"points":482,"category":463},"15611265","url-to-pdf",129,false,"v2",{"id":486,"name":5,"line":6,"ai":483,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":487,"top":18,"kw":488,"maker":11,"domain":10,"tier":19,"attempts":41,"strip":489,"url":9,"mix":490,"praise":98,"objection":118,"sub":21},15644430,0.05,[24,25,26,27,28],"5000000000003333500300035103333515133131",[32,33,34,32],1794036560625]