[{"data":1,"prerenderedAt":662},["ShallowReactive",2],{"project-33068017":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":46,"post_text":47,"what":48,"said":114,"maker_in_thread":239,"shape":252,"grid":257,"attempts":625,"same_week":626,"maker_shows":44,"maker_hidden":654,"reader_version":655,"card":656},"33068017","Javalin","I finished v5 of a JVM framework I've spent spent half a decade making","title","Show HN: I finished v5 of a JVM framework I've spent spent half a decade making","https:\u002F\u002Fjavalin.io\u002Fnews\u002Fjavalin-5.0.0-stable.html","javalin.io","tipsee",1664807409,2022,377,136,96,2570,4,"legend","languages","web framework library","library",[24,25,26,27,28],"java web framework","kotlin web framework","jetty","virtual threads","rest api","loved",0.379,{"positive":32,"neutral":32,"mixed":33,"critical":34},30,0,5,65,{"docs":37,"design":39,"idea":41,"execution":43,"performance":45},{"positive":38,"critical":38},1,{"positive":40,"critical":38},6,{"positive":42,"critical":38},3,{"positive":44,"critical":38},2,{"positive":38,"critical":33},[34,42,33,33,42,33,33,33,34,34,34,33,18,34,33,42,34,34,34,42,42,34,34,34,34,34,38,18,42,34,34,38,34,42,38,42,42,18,18,38],null,{"problem":49,"audience":64,"pricing":47,"motivation":76,"time_to_build":47,"stack":83,"openness":111,"stage":112,"team_size":113},{"value":50,"source":51,"evidence":52},"Lightweight alternative to heavy Java web frameworks like Spring Boot","commenter",[53,57,61],{"id":54,"by":55,"text":56},"33069226","adamredwoods","I just started using this! Spring Boot seemed so convoluted, having to go to a website to even begin. And then to have the Tomcat dependency seemed like a heavy lift just to get…",{"id":58,"by":59,"text":60},"33068935","rrampage","How does Javalin compare with Dropwizard which is also quite lightweight?",{"id":62,"by":11,"text":63},"33069001","Javalin offers way less, it's more or less just the web routing layer. No databases, no ORM, no config loading, etc.",{"value":65,"source":66,"evidence":67},"Java and Kotlin backend developers","inferred",[68,72],{"id":69,"by":70,"text":71},"33069237","simonw","I find that hello world example very pleasant to look at. Love that it's effectively a one-liner. ``` public static void main(String[] args) { var app =…",{"id":73,"by":74,"text":75},"33073125","cies","Congrats on the release! I reviewed Javalin lately and it was high on my list. We use quite a bit of Kotlin and look for a framework. I really dislike the magic that annotations…",{"value":77,"source":78,"evidence":79},"Maker dogfoods it across about 20 internal projects and it has gained popularity","maker",[80],{"id":81,"by":11,"text":82},"33071083","I've been dogfooding it hard, which is a great incentive to keep working on it. I think we have 20 Javalin projects where I work. It's also gotten pretty popular lately (3m…",[84,93,101,105],{"value":85,"source":78,"evidence":86},"Java",[87,90],{"id":88,"by":11,"text":89},"33069887","I'm not super sure what you're asking, but Javalin doesn't care at all about your directory structure. You can add it as a dependency to any existing gradle project you have, and…",{"id":91,"by":11,"text":92},"33074547","are you using an already-existing HTTP engine, like Jetty or Tomcat? Yes, Javalin is built on top of Jetty. - how do virtual threads fit into a web framework? Most JVM web…",{"value":94,"source":51,"evidence":95},"Kotlin",[96,100],{"id":97,"by":98,"text":99},"33069664","iammiles","I just wanted to say thank you for your work. The straightforward docs are some the best in my opinion when you want to go from \"How do I do ...\" to answer. I ended up using…",{"id":73,"by":74,"text":75},{"value":102,"source":78,"evidence":103},"Jetty",[104],{"id":91,"by":11,"text":92},{"value":106,"source":78,"evidence":107},"Vue plugin",[108],{"id":109,"by":11,"text":110},"33073828","Thank you! The Vue support is the thing in Javalin I'm the most proud of. There are a hundred web frameworks for the JVM, but none of them have anything close to the Vue support…","open_source","launched","unknown",{"praise":115,"objections":135,"requests":159,"questions":182,"alternatives":205},[116,120,128],{"value":117,"source":51,"evidence":118},"Simple, straightforward docs",[119],{"id":97,"by":98,"text":99},{"value":121,"source":51,"evidence":122},"Clean, minimal API and one-line hello world",[123,124],{"id":69,"by":70,"text":71},{"id":125,"by":126,"text":127},"33075719","JodieBenitez","That's probably the first time I see a java web framework api that actually makes me want to try it.",{"value":129,"source":51,"evidence":130},"Fast startup and lightweight compared to Spring Boot",[131,132],{"id":54,"by":55,"text":56},{"id":133,"by":11,"text":134},"33071999","Rebuild and restart. Javalin itself starts in milliseconds (the test suite starts and stops servers across 600+ tests in less than 10 seconds). If you run in debug mode in IDEA,…",[136,144,152],{"value":137,"source":51,"evidence":138},"No ORM or database layer included",[139,143],{"id":140,"by":141,"text":142},"33130011","adibalcan","From my understanding this framework doesn’t include an ORM. I consider the ORM one of the most important component for a web framework",{"id":62,"by":11,"text":63},{"value":145,"source":51,"evidence":146},"Hot reload requires restart or external tooling",[147,148],{"id":133,"by":11,"text":134},{"id":149,"by":150,"text":151},"33075640","reactor","Looks nice. Does it support hot reload? We use Quarkus heavily at work and one of the nifty feature is its ability to hot reload (fast restart to be specific) within few…",{"value":153,"source":51,"evidence":154},"Some callback-based APIs (websockets, SSE) seem at odds with virtual threads",[155],{"id":156,"by":157,"text":158},"33069236","NightMKoder","I haven’t tried this framework, but just looking at some examples, the web sockets and sse seem a bit out of place. In a Loom world you’d expect these to use channels or queues…",[160,168,175],{"value":161,"source":51,"evidence":162},"Hot reload support",[163,164],{"id":149,"by":150,"text":151},{"id":165,"by":166,"text":167},"33071904","helfire","How does the dev tooling work? Rebuild & restart the app each time? I find working on any sizable codebase this can take minutes even on the latest spring-boot. Quakrus has an…",{"value":169,"source":51,"evidence":170},"CORS and proxy protocol support",[171],{"id":172,"by":173,"text":174},"33069826","sandGorgon","this is very cool. quick question though - do u have a gradle build setup ? im new to java and saw this problem on spring boot. That you needed to have this bunch of complex…",{"value":176,"source":51,"evidence":177},"GraalVM native compilation guidance",[178],{"id":179,"by":180,"text":181},"33074196","kitd","Congrats on v5. Have you tried it yet with GraalVM and native compilation? Any gotchas?",[183,193,198],{"value":184,"source":51,"evidence":185},"How virtual threads are used given Loom is preview",[186,190],{"id":187,"by":188,"text":189},"33070498","heurisko","Given Project Loom hasn't been available, how does it utilise Virtual Threads already?",{"id":191,"by":11,"text":192},"33070786","If you run this on JDK19 with *--enable-preview*, Javalin will use Virtual Threads for the Server ThreadPool (as well as all other ThreadPools it has).",{"value":194,"source":51,"evidence":195},"How it compares to Ktor and Dropwizard",[196,197],{"id":73,"by":74,"text":75},{"id":58,"by":59,"text":60},{"value":199,"source":51,"evidence":200},"Whether it supports rendering traditional server-side apps",[201],{"id":202,"by":203,"text":204},"33069305","spapas82","Can we use this to render traditional apps (no js frameworks)?",[206,214,218,222,232],{"value":207,"source":51,"evidence":208},"Spring Boot",[209,210],{"id":54,"by":55,"text":56},{"id":211,"by":212,"text":213},"33092091","KronisLV","> Calling a constructor is DI. ‘new’ is the only DI framework required. This feels like the sane thing to do, but sadly for historical reasons this won't work with many (if not…",{"value":215,"source":51,"evidence":216},"Ktor",[217],{"id":73,"by":74,"text":75},{"value":219,"source":51,"evidence":220},"Dropwizard",[221],{"id":58,"by":59,"text":60},{"value":223,"source":51,"evidence":224},"Vert.x",[225,229],{"id":226,"by":227,"text":228},"33070531","de6u99er","Peeking int the docs, it reminds me a little bit of Vert-X. What do you think qbout such a statement?",{"id":230,"by":11,"text":231},"33070694","I respect Vert.x a lot, so I'm flattered, but Vert.x is a huge beast with focus on performance. Javalin is basically a tiny UX layer on top of Jetty. I don't think they are very…",{"value":233,"source":51,"evidence":234},"Sparkjava",[235],{"id":236,"by":237,"text":238},"33070818","voidfunc","Javalin is great and a worthy successor to its predecessor Sparkjava",{"comments":240,"answered":241,"key":242},24,15,[243,246,249],{"id":244,"text":245},"33069944","Hey, thank you for using it. Single-page docs are also my favorite, and Javalin\u002Fjdbi\u002FSQLite is my goto for quick stuff! > but with a very persistent project manager Your partner?…",{"id":247,"text":248},"33071626","Hard disagree on needing a DI library, manual DI is great.",{"id":250,"text":251},"33071813","Yes, disagree on needing a library. The way your comment was worded made it seem to me like you were saying all serious Java applications need a DI library, I'm sorry if I…",{"commenters":253,"max_depth":254,"maker_replies":240,"first_comment_mins":255,"lifespan_hours":256},84,10,42,111,[258,260,262,265,269,271,273,274,277,280,283,286,289,292,295,296,299,302,305,308,310,312,314,317,320,322,324,327,330,333,336,339,340,343,346,348,352,355,358,360,362,365,368,369,372,376,379,382,385,388,390,393,398,401,404,406,410,412,416,419,421,424,426,428,431,435,436,441,443,446,450,452,456,459,463,465,469,473,477,480,482,486,490,492,493,496,498,500,501,504,506,507,510,513,514,517,520,524,526,529,531,533,535,537,541,545,550,552,555,557,559,561,563,567,569,572,574,578,580,582,583,587,589,591,593,595,599,601,603,606,608,610,614,618,620,621],[97,33,34,259,98,33],"maker\u002Fpositive\u002Fdocs",[244,33,33,261,11,38],"maker\u002Fneutral\u002Fnone",[263,33,33,264,98,33],"33070698","other\u002Fneutral\u002Fnone",[266,33,42,267,268,33],"33071405","project\u002Fneutral\u002Fnone","Scarbutt",[247,33,33,270,11,38],"commenter\u002Fneutral\u002Fnone",[272,33,33,270,268,33],"33071694",[250,33,33,270,11,38],[275,33,33,270,276,33],"33074397","mkingston",[278,33,33,264,279,33],"33074884","erpellan",[281,33,33,264,282,33],"33075305","therealdrag0",[284,33,33,264,285,33],"33076433","coverj",[287,33,33,264,288,33],"33076645","rockwotj",[290,33,33,264,291,33],"33081501","yCombLinks",[293,33,33,264,294,33],"33077639","thiht",[211,33,33,264,212,33],[297,33,33,264,298,33],"33071764","vips7L",[300,33,42,261,301,33],"33070968","peanut_worm",[303,33,33,270,304,33],"33071303","samatman",[306,33,33,270,307,33],"33071474","NikolaNovak",[309,33,33,270,268,33],"33071591",[311,33,33,270,301,33],"33073311",[313,33,33,270,304,33],"33075031",[315,33,33,264,316,33],"33071321","javajosh",[318,33,33,264,319,33],"33072047","freedomben",[321,33,33,264,316,33],"33074058",[323,33,33,264,319,33],"33089435",[325,33,33,264,326,33],"33074804","yobert",[328,33,34,329,98,33],"33075309","project\u002Fpositive\u002Fnone",[331,33,33,264,332,33],"33075992","josephg",[334,33,34,329,335,33],"33075316","asadawadia",[337,38,34,338,319,33],"33072126","project\u002Fpositive\u002Fdesign",[54,44,34,329,55,33],[341,44,33,264,342,33],"33071547","dopidopHN",[344,42,33,264,345,33],"33068726","dang",[347,42,33,261,11,38],"33068752",[349,18,34,350,351,33],"33069279","maker\u002Fpositive\u002Fnone","moralestapia",[353,18,33,264,354,33],"33071173","stefs",[356,18,33,264,357,33],"33073418","tasuki",[359,18,33,264,351,33],"33074267",[361,18,33,264,212,33],"33092452",[363,34,34,329,364,33],"33069890","davidoniumz",[366,34,33,264,367,33],"33069968","tdudzik",[73,40,42,267,74,33],[370,40,42,267,371,33],"33074845","binkHN",[373,374,34,329,375,33],"33068873",7,"didip",[377,374,33,264,378,33],"33069665","takoid",[380,374,33,264,381,33],"33070757","robertlagrant",[383,374,33,264,384,33],"33070897","the_only_law",[386,374,33,264,387,33],"33069673","manishsharan",[389,374,33,264,268,33],"33071493",[391,374,33,264,392,33],"33074253","mateuszf",[394,395,42,396,397,33],"33073690",8,"project\u002Fneutral\u002Fdocs","pron",[399,395,33,400,11,38],"33073769","maker\u002Fneutral\u002Fdocs",[402,395,33,403,397,33],"33073905","commenter\u002Fneutral\u002Fdocs",[405,395,33,400,11,38],"33074440",[407,408,34,338,409,33],"33073760",9,"zmmmmm",[109,408,33,411,11,38],"maker\u002Fneutral\u002Fdesign",[413,408,34,414,415,33],"33078475","maker\u002Fpositive\u002Fidea","madm0d",[417,254,34,329,418,33],"33068618","stevoski",[420,254,33,261,11,38],"33068627",[422,254,33,264,423,33],"33075648","topspin",[425,254,34,329,418,33],"33076965",[427,254,34,338,423,33],"33077640",[429,254,33,264,430,33],"33082962","michaelcampbell",[432,433,42,261,434,33],"33070902",11,"potency",[81,433,33,350,11,38],[437,438,42,439,440,33],"33075200",12,"project\u002Fneutral\u002Fexecution","Matthias247",[442,438,33,439,11,38],"33082119",[444,445,42,267,430,33],"33082761",13,[447,448,42,267,449,33],"33073841",14,"the-alchemist",[91,448,33,451,11,38],"project\u002Fneutral\u002Fperformance",[453,448,34,454,455,33],"33076258","project\u002Fpositive\u002Fperformance","rkalla",[457,241,34,329,458,33],"33069970","ekvintroj",[460,461,34,350,462,33],"33070034",16,"jpgvm",[69,464,34,338,70,33],17,[466,464,42,467,468,33],"33070023","project\u002Fneutral\u002Fdesign","jannes",[470,471,34,329,472,33],"33075102",18,"floodfx",[474,475,34,329,476,33],"33074328",19,"sgt",[478,475,33,264,479,33],"33075269","abraxas",[481,475,33,264,476,33],"33076995",[483,484,34,329,485,33],"33076996",20,"seinecle",[487,488,34,329,489,33],"33071247",21,"danaugrs",[172,491,42,396,173,33],22,[88,491,33,396,11,38],[494,491,33,270,495,33],"33070454","matsemann",[497,491,33,270,173,33],"33079567",[149,499,42,439,150,33],23,[125,240,34,338,126,33],[140,502,38,503,141,33],25,"project\u002Fcritical\u002Fnone",[165,505,42,439,166,33],26,[133,505,33,439,11,38],[508,505,42,439,509,33],"33072687","ris58h",[58,511,42,512,59,33],27,"project\u002Fneutral\u002Fidea",[62,511,33,512,11,38],[236,515,34,516,237,33],28,"project\u002Fpositive\u002Fidea",[518,515,33,264,519,33],"33072183","vincnetas",[521,522,34,523,354,33],"33071320",29,"project\u002Fpositive\u002Fexecution",[156,32,38,525,157,33],"project\u002Fcritical\u002Fdesign",[527,32,34,338,528,33],"33069646","uup",[530,32,33,264,397,33],"33073808",[179,532,42,439,180,33],31,[534,532,33,396,11,38],"33074590",[536,532,42,439,180,33],"33077146",[538,539,34,329,540,33],"33069459",32,"recursivedoubts",[542,543,34,523,544,33],"33069720",33,"kcbanner",[546,547,38,548,549,33],"33068988",34,"project\u002Fcritical\u002Fdocs","pkulak",[551,547,33,396,11,38],"33069024",[553,547,42,396,554,33],"33069474","gavinray",[556,547,33,400,11,38],"33070156",[558,547,42,396,549,33],"33069835",[560,547,33,400,11,38],"33070038",[562,547,34,350,549,33],"33070198",[564,565,42,512,566,33],"33069220",35,"speedgoose",[568,565,33,512,11,38],"33069303",[570,565,33,264,571,33],"33069329","samtheprogram",[187,573,42,439,188,33],36,[575,573,38,576,577,33],"33070558","project\u002Fcritical\u002Fexecution","oweiler",[579,573,33,439,11,38],"33070805",[581,573,33,270,397,33],"33073606",[191,573,33,439,11,38],[584,573,42,585,586,33],"33071075","maker\u002Fneutral\u002Fperformance","daveidol",[588,573,33,512,11,38],"33071195",[590,573,42,451,354,33],"33071229",[592,573,42,451,354,33],"33107737",[594,573,42,451,354,33],"33119289",[596,597,42,261,598,33],"33090871",37,"djmips",[600,597,33,261,11,38],"33094049",[202,602,42,512,203,33],38,[604,602,34,516,605,33],"33069369","skibz",[607,602,42,396,203,33],"33069670",[609,602,42,396,544,33],"33069738",[611,612,34,329,613,33],"33085862",39,"sgammon",[615,616,33,264,617,33],"33078996",40,"davidguetta",[226,619,42,512,227,33],41,[230,619,33,512,11,38],[622,255,38,623,624,33],"33074591","project\u002Fcritical\u002Fidea","markhahn",[],[627,632,636,641,645,649],{"id":628,"name":629,"points":630,"category":631},"33049046","SigNoz",510,"dev_tools",{"id":633,"name":634,"points":635,"category":20},"33035580","uFuzzy.js",251,{"id":637,"name":638,"points":639,"category":640},"33038117","GhostlyStock",190,"ai",{"id":642,"name":643,"points":644,"category":631},"33094627","Sharing",189,{"id":646,"name":647,"points":648,"category":631},"33089131","Async UI",173,{"id":650,"name":651,"points":652,"category":653},"33094720","kafka-worker",148,"infrastructure",false,"v2",{"id":657,"name":5,"line":6,"ai":654,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":658,"top":18,"kw":659,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":660,"url":9,"mix":661,"praise":117,"objection":137,"sub":21},33068017,0.38,[24,25,26,27,28],"5300300055504503555335555514355153133441",[32,32,33,34],1794036625735]