[{"data":1,"prerenderedAt":851},["ShallowReactive",2],{"project-19581788":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":47,"post_text":50,"what":51,"said":79,"maker_in_thread":189,"shape":194,"grid":198,"attempts":813,"same_week":814,"maker_shows":48,"maker_hidden":843,"reader_version":844,"card":845},"19581788","ReportMill SnapTea","300k lines of Java UI code running native in browser at desktop speed","title","Show HN: 300k lines of Java UI code running native in browser at desktop speed","http:\u002F\u002Freportmill.com\u002Fsnaptea\u002FRM15\u002F","reportmill.com","jeffreportmill1",1554467061,2019,289,236,109,2195,5,"legend","productivity","report designer","web_app",[24,25,21,26,27],"java to javascript","teavm","swing in browser","webassembly","debated",-0.027,{"positive":31,"neutral":32,"mixed":33,"critical":34},18,14,6,25,63,{"performance":37,"design":40,"execution":42,"idea":44,"docs":46},{"positive":38,"critical":39},10,7,{"positive":41,"critical":39},1,{"positive":43,"critical":41},0,{"positive":45,"critical":18},4,{"positive":43,"critical":43},[48,49,43,41,41,41,41,43,43,43,41,41,41,43,43,43,41,43,43,48,49,41,41,43,43,41,43,18,48,48,45,43,18,49,18,18,45,41,41,18],3,2,null,{"problem":52,"audience":50,"pricing":50,"motivation":50,"time_to_build":50,"stack":62,"openness":77,"stage":78,"team_size":77},{"value":53,"source":54,"evidence":55},"Running a large existing Java desktop UI codebase in the browser without rewriting it","maker",[56,59],{"id":57,"by":11,"text":58},"19581891","This uses TeaVM to compile Java to JavaScript. Launches faster in browser than the desktop (once cached). Download is 1.2mb (compressed) - much smaller than desktop version.…",{"id":60,"by":11,"text":61},"19584567","I think the big win is that TeaVM has a lighter runtime and conditionally compiles only what is needed into the final JavaScript. There are tools that let Java do this now, but I…",[63,67,71],{"value":64,"source":54,"evidence":65},"Java",[66],{"id":57,"by":11,"text":58},{"value":68,"source":54,"evidence":69},"TeaVM",[70],{"id":57,"by":11,"text":58},{"value":72,"source":54,"evidence":73},"SnapKit UI framework",[74],{"id":75,"by":11,"text":76},"19584604","I use something called SnapKit (available on GitHub). It's like Swing and JavaFX had a baby, except that it has an abstraction layer that lets it compile to either JVM or…","unknown","launched",{"praise":80,"objections":106,"requests":133,"questions":148,"alternatives":163},[81,96],{"value":82,"source":83,"evidence":84},"Impressive engineering and fast load time once cached","commenter",[85,89,92],{"id":86,"by":87,"text":88},"19582161","mwcampbell","This is an impressive feat of engineering. But unfortunately, the resulting UI is completely inaccessible to blind users with screen readers, and probably users with some other…",{"id":90,"by":11,"text":91},"19586101","I've done both CheerpJ and TeaVM. CheerpJ is awesome - it's a complete port of the JVM to JS and apps often work with no modification. However, the app + runtime is about 75mb…",{"id":93,"by":94,"text":95},"19585428","allisterb","This is pretty awesome. The UI load time and responsiveness are vert impressive. I hate web dev with a passion and I've been looking for something like this.",{"value":97,"source":83,"evidence":98},"Runs well on iPad and phones",[99,103],{"id":100,"by":101,"text":102},"19581953","saagarjha","I went in with low expectations, but this works surprisingly well on iPad.",{"id":104,"by":11,"text":105},"19581987","It even runs reasonably well on iPhone - though squinting required. And an Apple pencil doesn't hurt, too.",[107,122,126],{"value":108,"source":83,"evidence":109},"Laggy UI and poor performance in Firefox",[110,114,118],{"id":111,"by":112,"text":113},"19581915","lasagnaphil","No, this is definitely not running at desktop speeds. I have a Ryzen 7 2700, and this thing lags often even with basic UI operations (clicking buttons and menus, dragging…",{"id":115,"by":116,"text":117},"19582447","majorexception","Hmm. I have 4-core i7-4770, but the UI on this thing lags a lot, all widgets generally feels sluggish. Such graphics operations don't require a lot of CPU, though, remember that…",{"id":119,"by":120,"text":121},"19581901","seba_dos1","It's cool, but it runs at about 10 FPS at best for me :P",{"value":123,"source":83,"evidence":124},"Inaccessible to screen readers",[125],{"id":86,"by":87,"text":88},{"value":127,"source":83,"evidence":128},"Blurry rendering on some high DPI displays",[129],{"id":130,"by":131,"text":132},"19582585","jimbo1qaz","This doesn't support native high DPI rendering. I think it's rendered at low DPI, and upscaled\u002Fblurry on my laptop. Other commenters have stated that it uses canvas.",[134,141],{"value":135,"source":83,"evidence":136},"Accessibility support",[137,138],{"id":86,"by":87,"text":88},{"id":139,"by":87,"text":140},"19582354","That's true if the application is entirely about visual layout, e.g. positioning and font sizes. But a blind user should still have an accessible way of controlling the content…",{"value":142,"source":83,"evidence":143},"Keyboard shortcuts and edit menu support",[144],{"id":145,"by":146,"text":147},"19583781","DiseasedBadger","It runs slightly worse than most java UIs for me on a Dell + i7 + Chrome, for me. I also could not use any keyboard shortcuts, and the edit menu options did nothing at all.…",[149,156],{"value":150,"source":83,"evidence":151},"Can existing Java libraries like GeoTools be included",[152],{"id":153,"by":154,"text":155},"19588947","benboughton1","This is fantastic. I tried it out and works very well. I am self taught python and a bit of javascript to put front end to python servers. I have not really ventured outside that…",{"value":157,"source":83,"evidence":158},"Does it work on older browsers",[159],{"id":160,"by":161,"text":162},"19582686","droobles","This is awesome! Great work. How does this work on older browsers? It would have a leg up on current web assembly if it's backwards compatible.",[164,169,175,182],{"value":165,"source":54,"evidence":166},"CheerpJ",[167,168],{"id":60,"by":11,"text":61},{"id":90,"by":11,"text":91},{"value":170,"source":54,"evidence":171},"JSweet",[172],{"id":173,"by":11,"text":174},"19584589","There are a few people working on similar projects, which I can use if absolutely needed (CheerpJ, JSweet). But you're right. It makes me sad that Oracle doesn't do something…",{"value":176,"source":83,"evidence":177},"Qt WebAssembly",[178],{"id":179,"by":180,"text":181},"19585360","thope","this makes me think of Qt in a web browser using WebAssembly [0] I find it really impressive that desktop applications can now run quite smoothly in a web browser. In like 15…",{"value":183,"source":83,"evidence":184},"Eclipse RAP",[185],{"id":186,"by":187,"text":188},"19584363","LoSboccacc","https:\u002F\u002Fwww.eclipse.org\u002Frap\u002F (and others) doesn't work that well because the event model between web and desktop is radically different. if you don't have complex interactions or…",{"comments":34,"answered":32,"key":190},[191,192,193],{"id":57,"text":58},{"id":60,"text":61},{"id":75,"text":76},{"commenters":195,"max_depth":38,"maker_replies":34,"first_comment_mins":196,"lifespan_hours":197},128,11,106,[199,201,205,207,211,213,217,219,222,225,226,229,231,235,238,241,244,247,251,252,254,256,258,260,262,265,268,271,274,276,278,280,283,284,287,290,293,295,298,301,303,306,308,311,313,315,317,320,323,325,327,329,331,334,336,339,341,344,346,349,352,354,357,360,363,366,368,371,373,376,379,381,383,386,389,392,395,397,399,402,405,408,411,414,416,418,421,423,426,428,430,433,435,437,439,443,445,448,451,453,455,457,459,462,464,467,469,471,473,476,478,481,483,486,489,491,493,496,498,501,505,508,511,515,519,522,524,526,529,532,535,537,539,543,547,550,552,555,557,560,563,565,568,570,573,575,577,579,582,584,586,589,592,594,597,600,602,605,608,611,613,615,618,620,622,623,624,627,630,631,632,634,636,638,640,642,644,646,650,653,656,659,662,664,667,669,671,673,676,680,684,688,690,693,696,697,701,703,706,708,710,712,714,717,720,722,726,729,733,735,738,741,746,750,753,755,759,761,764,767,770,773,775,777,779,783,786,788,792,794,798,801,803,805,809,811],[57,43,43,200,11,41],"project\u002Fpositive\u002Fperformance",[202,43,48,203,204,43],"19583551","maker\u002Fneutral\u002Fperformance","Klathmon",[60,43,43,206,11,41],"maker\u002Fneutral\u002Fexecution",[208,43,48,209,210,43],"19583729","project\u002Fneutral\u002Fnone","soulnothing",[75,43,43,212,11,41],"project\u002Fneutral\u002Fdesign",[214,43,41,215,216,43],"19589203","project\u002Fcritical\u002Fnone","alok-g",[218,43,43,209,11,41],"19590701",[220,43,48,221,216,43],"19590888","project\u002Fmixed\u002Fnone",[223,43,48,221,224,43],"19584091","stewbrew",[173,43,43,209,11,41],[227,43,48,209,228,43],"19585928","matt2000",[90,43,43,230,11,41],"project\u002Fneutral\u002Fperformance",[232,43,43,233,234,43],"19587186","other\u002Fneutral\u002Fnone","arendtio",[236,43,43,233,237,43],"19587438","debaserab2",[239,43,43,233,240,43],"19587468","gcb0",[242,43,43,233,243,43],"19587595","macspoofing",[245,43,43,233,246,43],"19588130","pklee",[248,43,43,249,250,43],"19588574","commenter\u002Fneutral\u002Fnone","javajosh",[86,41,41,215,87,43],[253,41,43,209,11,41],"19582250",[255,41,48,212,87,43],"19582395",[257,41,43,212,11,41],"19582571",[259,41,43,249,87,43],"19582714",[186,41,41,261,187,43],"project\u002Fcritical\u002Fdesign",[263,41,48,212,264,43],"19582256","anoncake",[266,41,43,267,87,43],"19582373","commenter\u002Fneutral\u002Fprivacy",[269,41,43,267,270,43],"19582995","mastazi",[272,41,43,267,273,43],"19583803","ago",[275,41,43,267,270,43],"19587964",[277,41,43,267,264,43],"19590472",[279,41,43,267,264,43],"19583823",[281,41,41,215,282,43],"19582257","omega3",[139,41,43,249,87,43],[285,41,43,233,286,43],"19583195","cglace",[288,41,43,249,289,43],"19583238","jimbokun",[291,41,43,249,292,43],"19585473","geofft",[294,41,41,215,87,43],"19582323",[296,41,43,249,297,43],"19586602","stefan_",[299,41,43,249,300,43],"19582520","bufferoverflow",[302,41,43,249,87,43],"19582561",[304,41,43,249,305,43],"19582619","fastball",[307,41,43,249,87,43],"19582649",[309,41,43,249,310,43],"19583425","vinceguidry",[312,41,43,249,187,43],"19584289",[314,41,43,249,310,43],"19584372",[316,41,43,249,187,43],"19584675",[318,41,43,249,319,43],"19585939","HeWhoLurksLate",[321,41,43,249,322,43],"19588963","yjftsjthsd-h",[324,41,43,249,305,43],"19584046",[326,41,43,249,87,43],"19584291",[328,41,43,249,319,43],"19585890",[330,41,43,249,305,43],"19587330",[332,41,43,249,333,43],"19587416","jhayward",[335,41,43,249,322,43],"19588954",[337,41,43,249,338,43],"19589027","sbov",[340,41,43,249,87,43],"19596994",[342,41,43,249,343,43],"19582752","fsloth",[345,41,43,249,87,43],"19582884",[347,41,43,249,348,43],"19583633","monkeynotes",[350,41,43,249,351,43],"19583740","humblebee",[353,41,43,249,87,43],"19583936",[355,41,43,233,356,43],"19583971","RickTM",[358,41,41,261,359,43],"19585962","miki123211",[361,41,43,249,362,43],"19583492","bzbarsky",[364,41,43,249,365,43],"19585908","atomicUpdate",[367,41,43,249,362,43],"19586174",[369,41,43,249,370,43],"19588328","tomcam",[372,41,43,249,362,43],"19589043",[374,41,41,261,375,43],"19583688","mattnewton",[377,41,43,233,378,43],"19585007","tracker1",[380,41,43,249,375,43],"19587182",[382,41,43,249,378,43],"19587916",[384,41,41,261,385,43],"19584104","brd529",[387,41,43,249,388,43],"19586412","cmroanirgo",[390,41,43,249,391,43],"19588058","toyg",[393,41,43,249,394,43],"19588739","austincheney",[396,41,43,249,388,43],"19589831",[398,41,43,249,394,43],"19590275",[400,41,43,249,401,43],"19584483","bytematic",[403,41,43,233,404,43],"19586375","haglin",[406,41,43,249,407,43],"19586759","phry",[409,41,43,249,410,43],"19587457","usepgp",[412,41,43,249,413,43],"19589388","sterlind",[415,41,43,249,343,43],"19590205",[417,41,43,249,394,43],"19588725",[419,41,43,249,420,43],"19582809","dosy",[422,41,43,249,87,43],"19583037",[424,41,43,249,425,43],"19583423","giornogiovanna",[427,41,43,249,264,43],"19583758",[429,41,43,249,319,43],"19585638",[431,41,43,249,432,43],"19584422","Piskvorrr",[434,41,43,249,292,43],"19585463",[436,41,43,249,394,43],"19588763",[438,41,43,249,420,43],"19589643",[440,41,41,441,442,43],"19585453","project\u002Fcritical\u002Fexecution","kalleboo",[444,41,43,249,319,43],"19585577",[446,41,43,249,447,43],"19583724","ndarilek",[449,41,43,249,450,43],"19583792","ralusek",[452,41,43,249,447,43],"19584107",[454,41,43,249,447,43],"19584230",[456,41,43,249,450,43],"19584394",[458,41,43,249,450,43],"19584387",[460,41,43,249,461,43],"19584700","squeaky-clean",[463,41,43,249,447,43],"19584932",[465,41,43,249,466,43],"19584740","orf",[468,41,43,249,447,43],"19584888",[470,41,43,249,450,43],"19586171",[472,41,43,249,447,43],"19586615",[474,41,43,249,475,43],"19584591","bartread",[477,41,43,249,447,43],"19584762",[479,41,43,249,480,43],"19585960","jerf",[482,41,43,249,447,43],"19586589",[484,41,43,249,485,43],"19586052","DoreenMichele",[487,41,48,488,447,43],"19586443","project\u002Fneutral\u002Fidea",[490,41,43,249,485,43],"19586496",[492,41,43,249,359,43],"19585847",[494,41,43,249,495,43],"19584626","dyarosla",[497,41,43,249,319,43],"19585739",[499,41,48,488,500,43],"19586263","Wowfunhappy",[502,41,48,503,504,43],"19586718","project\u002Fneutral\u002Fdocs","Arnavion",[506,41,43,249,507,43],"19586764","maimeowmeow",[509,41,43,233,510,43],"19587034","vijaybritto",[512,49,41,513,514,43],"19582415","project\u002Fcritical\u002Fidea","drderidder",[516,49,43,517,518,43],"19582484","commenter\u002Fneutral\u002Fidea","alvalentini",[520,49,43,521,11,41],"19582510","project\u002Fpositive\u002Fidea",[523,49,48,488,425,43],"19583548",[525,49,41,513,514,43],"19606841",[527,49,43,233,528,43],"19583754","fulafel",[530,49,41,261,531,43],"19583873","blotter_paper",[533,48,43,233,534,43],"19583721","qrohlf",[111,45,41,536,112,43],"project\u002Fcritical\u002Fperformance",[538,45,43,230,11,41],"19581963",[540,45,43,541,542,43],"19582321","commenter\u002Fneutral\u002Fperformance","TeMPOraL",[544,45,43,545,546,43],"19582433","other\u002Fneutral\u002Fperformance","93s6oz",[548,45,43,249,549,43],"19582457","ionised",[551,45,43,249,546,43],"19582477",[553,45,43,249,554,43],"19582597","xori",[556,45,43,249,549,43],"19583415",[558,45,43,233,559,43],"19582749","vardump",[561,45,43,545,562,43],"19582500","kbenson",[564,45,43,545,305,43],"19582594",[566,45,43,545,567,43],"19582761","Yoric",[569,45,43,545,204,43],"19583828",[571,45,43,545,572,43],"19585392","mi100hael",[574,45,43,545,305,43],"19583902",[576,45,43,545,562,43],"19584417",[578,45,43,541,362,43],"19608835",[580,45,43,545,581,43],"19582771","Spivak",[583,45,43,545,305,43],"19583885",[585,45,43,545,581,43],"19585455",[587,45,43,545,588,43],"19583766","StavrosK",[590,45,41,536,591,43],"19582374","dziulius",[593,45,43,200,11,41],"19582631",[595,45,43,545,596,43],"19582759","ixtli",[598,45,43,541,599,43],"19587473","garaetjjte",[601,45,43,545,567,43],"19582784",[603,45,43,545,604,43],"19585375","ww520",[606,45,43,607,591,43],"19612764","commenter\u002Fcritical\u002Fperformance",[609,45,43,233,610,43],"19586348","eweise",[612,45,43,545,591,43],"19612761",[614,45,18,200,420,43],"19582550",[616,45,18,200,617,43],"19582583","BoorishBears",[619,45,41,536,243,43],"19587584",[621,45,43,541,617,43],"19588146",[100,18,18,200,101,43],[104,18,43,200,11,41],[625,18,41,261,626,43],"19582369","xondono",[628,18,18,200,629,43],"19582579","snazz",[153,33,18,521,154,43],[119,39,41,536,120,43],[633,39,43,230,11,41],"19581949",[635,39,41,536,120,43],"19581960",[637,39,43,545,305,43],"19582646",[639,39,43,545,581,43],"19585265",[641,39,43,541,362,43],"19608777",[643,39,48,203,362,43],"19608780",[179,645,18,521,180,43],8,[647,648,41,536,649,43],"19581875",9,"hbz",[651,648,43,652,11,41],"19581906","maker\u002Fneutral\u002Fnone",[654,648,18,200,655,43],"19581943","chvid",[657,38,18,200,658,43],"19583098","sparsely",[660,38,43,249,661,43],"19583147","chrisco255",[663,38,43,249,531,43],"19583943",[665,38,43,249,666,43],"19585036","rat9988",[668,38,43,249,531,43],"19586067",[670,38,43,249,661,43],"19587433",[672,38,43,541,531,43],"19589598",[674,38,43,249,675,43],"19592837","konsoletyper",[677,196,18,678,679,43],"19589000","project\u002Fpositive\u002Fnone","truth_seeker",[681,682,48,209,683,43],"19582967",12,"epaga",[685,686,43,233,687,43],"19582871",13,"catsanddogsare",[689,686,43,233,11,41],"19583118",[691,686,43,233,692,43],"19583130","vollmond",[694,686,43,233,695,43],"19583166","ben509",[130,32,41,261,131,43],[698,32,48,699,700,43],"19582717","project\u002Fmixed\u002Fdesign","roywiggins",[702,32,43,212,11,41],"19582737",[704,32,48,699,705,43],"19583080","sccxy",[93,707,18,200,94,43],15,[115,709,41,536,116,43],16,[160,711,18,678,161,43],17,[713,711,43,230,11,41],"19582785",[715,31,18,521,716,43],"19582443","_the_inflator",[718,31,43,249,719,43],"19582627","collyw",[721,31,43,233,11,41],"19582870",[723,724,18,678,725,43],"19582402",19,"gedy",[727,724,18,521,728,43],"19584259","halfjoking",[730,731,18,200,732,43],"19585186",20,"brabel",[734,731,43,209,11,41],"19585514",[145,736,48,737,146,43],21,"project\u002Fmixed\u002Fexecution",[739,740,18,200,604,43],"19585394",22,[742,743,48,744,745,43],"19582875",23,"project\u002Fmixed\u002Fidea","jillesvangurp",[747,743,18,748,749,43],"19583006","project\u002Fpositive\u002Fdesign","coldtea",[751,743,43,249,752,43],"19583061","icedchai",[754,743,43,233,11,41],"19583022",[756,757,48,488,758,43],"19582064",24,"random_kris",[760,757,43,209,11,41],"19582196",[762,34,48,488,763,43],"19582142","alexandernst",[765,34,41,513,766,43],"19582191","Illniyar",[768,34,43,249,769,43],"19582265","Bjartr",[771,34,43,541,772,43],"19582508","tudelo",[774,34,43,230,11,41],"19582925",[776,34,43,541,769,43],"19600369",[778,34,43,521,11,41],"19582275",[780,781,41,513,782,43],"19588339",26,"dreamcompiler",[784,785,48,488,719,43],"19582617",27,[787,785,43,488,11,41],"19582695",[789,790,41,215,791,43],"19582401",28,"1023bytes",[793,790,43,249,243,43],"19587632",[795,796,41,513,797,43],"19583699",29,"ConcernedCoder",[799,796,43,249,800,43],"19587603","Roboprog",[802,796,43,249,243,43],"19587656",[804,796,43,249,800,43],"19619342",[806,807,43,233,808,43],"19582371",30,"gadders",[810,807,43,200,11,41],"19582423",[812,807,18,200,808,43],"19582513",[],[815,819,824,829,834,839],{"id":816,"name":817,"points":818,"category":20},"19572514","SourcedFact",593,{"id":820,"name":821,"points":822,"category":823},"19593866","Water.css",501,"dev_tools",{"id":825,"name":826,"points":827,"category":828},"19613477","Ethical Resources",291,"other",{"id":830,"name":831,"points":832,"category":833},"19615895","Lawler.io",260,"creative",{"id":835,"name":836,"points":837,"category":838},"19626404","Hacker Newspapers",250,"learning_science",{"id":840,"name":841,"points":842,"category":823},"19610459","Xmake",186,false,"v2",{"id":846,"name":5,"line":6,"ai":843,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":847,"top":18,"kw":848,"maker":11,"domain":10,"tier":19,"attempts":43,"strip":849,"url":9,"mix":850,"praise":82,"objection":108,"sub":21},19581788,-0.03,[24,25,21,26,27],"3201111000111000100321100105334052554115",[31,32,33,34],1794036576380]